【问题标题】:Why does Javascript show me the wrong date?为什么 Javascript 显示错误的日期?
【发布时间】:2017-09-07 23:13:17
【问题描述】:

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

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

此日期对象应相当于 Sep 7 2017 4:46:06 PM

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

console.log(date);

返回如下:

2017 年 9 月 8 日星期五 02:46:06 GMT+1000(澳大利亚东部标准时间)

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

混淆的关键点:

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

【问题讨论】:

    标签: javascript date object


    【解决方案1】:

    创建日期时,您确实指定了时区。最后的 Z 表示 Zulu 或格林威治标准时间。您的计算机与格林威治标准时间相差 10 小时,因此它会调整为您的本地时区以进行显示。

    如果您希望日期使用您当地的时区,请删除 Z

    【讨论】:

    • 不,不要删除 Z。字符串被正确解析,删除 Z 意味着它将被视为本地,因此将代表不同的时间点(对于 OP,10 小时不同) .
    【解决方案2】:
    var date = new Date("2017-09-07T16:46:06.000Z");
    

    因此,日期字符串末尾的 Z 似乎代表 UTC 或祖鲁时间

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

    应该是正确的解决方案

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2018-04-20
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2020-01-18
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多