Javascript new Date将日期减少一天

Javascript new Date decreases date by a day

本文关键字:一天 日期 new Date Javascript      更新时间:2023-09-26

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

为什么会发生这种情况?

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

这是因为当您在JavaScript中使用new Date()时,它会转换并打印浏览器时区中的日期。

所以如果你打印:

new Date("2016-01-06T00:00:00-0800")

由于时区(由浏览器确定)和UTC时间之间的-0800差异,您将获得所需的实际输出。

UTC时区用于解释不包含时区信息的ISO 8601格式的参数(请注意,ECMAScript 2015指定,没有时区的日期-时间字符串将被视为本地字符串,而不是UTC字符串)。

https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Date/parse

由于您的日期字符串似乎缺少一个,JS假定它是UTC时间。你看到的结果是同一时刻,偏移到你的时区。您所需要做的就是向正在解析的字符串提供时区数据。

这是因为日期考虑了浏览器的时区,在您的情况下是PST。它对我也有同样的作用,在EST:

test = new Date("2016-01-06T00:00:00")

2016年1月5日星期二19:00:00 GMT-0500(美国东部时间)

您仍然可以通过使用任何.getUTC*函数来获得UTC时间,例如:

test.getUTCDate();

6