Javascript new Date将日期减少一天

时间:2016-01-12 20:55:06

标签: javascript angularjs date

我有一个场景,我使用AngularJS来读取日期。有趣的是,它将我的日期值减少了一个。

为什么会这样?

new Date("2016-01-06T00:00:00")
give me result as 
Tue Jan 05 2016 16:00:00 GMT-0800 (Pacific Standard Time)

3 个答案:

答案 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