当我注意到 setUTCHours() 返回错误的日期时,我在学习期间一直在摆弄 Date() 对象。
例子:
var myDate = new Date(2014, 0, 1);
myDate.setUTCHours(10);
myDate;
看着这个,我预计日期是 2014 年 1 月 1 日星期三 10:00:00 UTC,但它晚了一天。这是为什么?
这是我的 http://jsfiddle.net/L5QEC/与其他一些基本方法的比较。
最佳答案
日期对象使用 time value那是UTC。他们还有一个 offset表示主机系统的时区偏移量。默认情况下,日期和时间将使用偏移量来显示本地值。如果您是 UTC+1,则偏移量将为 -60,new Date(2014, 0, 1)
将为 2013-12-31T23:00:00Z
创建一个日期code> 并使用偏移量显示本地日期 2014-01-01T00:00:00+0100
。
因此,如果您将 UTC 时间更改为 10,则 UTC 时间为:2013-12-31T10:00:00Z
本地等效时间为 2013-12-31T11:00: 00+0100
.
因此,通过将 UTC 时间设置为 10,您实际上将本地时间设置为前一天的 11:00(即 UTC 时间 + 1 小时偏移量)。
关于JavaScript setUTCHours 返回错误的日期,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23281932/