我有一个场景,我使用AngularJS来读取日期。有趣的是,它将我的日期值减少了一个。
为什么会这样?
new Date("2016-01-06T00:00:00")
give me result as
Tue Jan 05 2016 16:00:00 GMT-0800 (Pacific Standard Time)
答案 0 :(得分:3)
这是因为当您在JavaScript中使用new Date()
时,它会在浏览器时区中转换并打印日期。
所以如果你打印:
new Date("2016-01-06T00:00:00-0800")
您将获得所需的实际输出,因为您的时区(由浏览器确定)与UTC时间之间存在-0800
差异。
答案 1 :(得分:2)
UTC时区用于解释ISO 8601格式中不包含时区信息的参数(请注意,ECMAScript 2015指定不带时区的日期时间字符串将被视为本地,而不是UTC)。
https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Date/parse
由于您的日期字符串似乎缺少一个,因此JS假定它的UTC时间。您看到的结果是相同的时刻,偏移到您的时区。您需要做的就是为您要解析的字符串提供时区数据。
答案 2 :(得分:2)
这是因为日期是将您的浏览器的时区记入帐户,在您的情况下是在PST中。在EST中我也这样做:
test = new Date("2016-01-06T00:00:00")
2016年1月5日星期二19:00:00 GMT-0500(EST)
您仍然可以使用任何.getUTC*
函数获取UTC时间,如下所示:
test.getUTCDate();
6