我有一个网页,其中包含日、月和年的三个下拉菜单。如果我使用接受数字的 JavaScript Date
构造函数,那么我将获得当前时区的 Date
对象:
new Date(xiYear, xiMonth, xiDate)
给出正确的日期,但由于夏令时,它认为日期是 GMT+01:00。
这里的问题是,然后我将此 Date
传递给 Ajax 方法,当日期在服务器上被反序列化时,它已被转换为 GMT,因此丢失了一个小时,从而将日期向后移动一。
现在我可以将日、月和年单独传递到 Ajax 方法中,但似乎应该有更好的方法。
接受的答案为我指明了正确的方向,但是仅使用 setUTCHours()
本身就发生了变化:
Apr 5th 00:00 GMT+01:00
到
Apr 4th 23:00 GMT+01:00
然后我还必须设置 UTC 日期、月份和年份以结束
Apr 5th 01:00 GMT+01:00
这正是我想要的。
最佳答案
使用 .setUTCHours()
可以实际设置 UTC 时间的日期,这将允许您在整个系统中使用 UTC 时间。
你不能在构造函数中使用 UTC 设置它,除非你指定一个日期字符串。
使用 new Date(Date.UTC(year, month, day, hour, minute, second))
您可以从特定的 UTC 时间创建 Date-object。
关于javascript - 创建具有设定时区的日期而不使用字符串表示,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/439630/