为什么Javascript会向我显示错误的日期?

时间:2017-09-07 23:13:18

标签: javascript date object

考虑使用JavaScript创建的以下日期对象。

var date = new Date("2017-09-07T16:46:06.000Z");

此日期对象应相当于2017年9月7日下午4:46:06

但是,在浏览器控制台中,当我键入以下内容时:

console.log(date);

返回以下内容:

  

Fri Sep 08 2017 02:46:06 GMT + 1000(E. Australia Standard Time)

时机不对。 (它实际上是今天的日期,但时间是完全错误的。)

困惑的关键点:

  • 我的电脑时区设置为GMT + 1000(澳大利亚/布里斯班)
  • 当我创建日期对象时,我没有指定时区,因此它应该符合我的系统时区
  • 当我将日期对象记录到控制台时,它仍然使用GMT + 1000(澳大利亚/布里斯班),但日期不同

2 个答案:

答案 0 :(得分:6)

创建日期时,您 指定时区。最后Z表示 Zulu 或格林威治标准时间。您的计算机距格林威治标准时间10小时,因此它会根据您当地的时区进行调整。

如果您希望日期位于当地时区,请移除Z

答案 1 :(得分:1)

var date = new Date("2017-09-07T16:46:06.000Z");

所以看起来日期字符串末尾的Z代表UTC或Zulu时间

var date = new Date("2017-09-07T16:46:06.000");

应该是正确的解决方案