我有一个网页,其中包含日、月和年的三个下拉菜单。如果我使用接受数字的 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
这就是我想要的。
原文由 Dan 发布,翻译遵循 CC BY-SA 4.0 许可协议
使用
.setUTCHours()
可以实际设置 UTC 时间的日期,这将允许您在整个系统中使用 UTC 时间。但是,除非您指定日期字符串,否则您不能在构造函数中使用 UTC 设置它。
使用
new Date(Date.UTC(year, month, day, hour, minute, second))
您可以从特定的 UTC 时间创建日期对象。