【问题标题】:JavaScript ISO 8601 string into Date objectJavaScript ISO 8601 字符串转换为 Date 对象
【发布时间】:2014-03-03 16:04:17
【问题描述】:

在浏览器的 JavaScript 控制台中考虑以下两个 sn-ps(我已尝试使用 Google Chrome)

第一个陈述:

s = "2014-03-03 18:30:00";
d = new Date(s);
// Mon Mar 03 2014 18:30:00 GMT+0100 (CET)

第二条语句:

s = "2014-03-03T18:30:00";
d = new Date(s);
// Mon Mar 03 2014 19:30:00 GMT+0100 (CET)

看到了吗?解析的日期和时间对我来说相差一小时,因为我住在 UTC+1。

但是为什么 JavaScript Date 对象会以不同的方式解析这两个字符串,因为根本没有给出时区?

【问题讨论】:

  • 第一个解析为当地时间,第二个解析为UTC。当您在第二个示例中使用 T 时,这意味着您正在指定时间和时区。由于您给它一个时区,它假定它为0 (UTC)。

标签: javascript parsing datetime timezone iso8601


【解决方案1】:
  • 2014-03-03T... 表示法是一个花哨的JavaScript Date Time String Format,它需要一个时区。如果您不提供,则默认为 Z (UTC)。

  • 但是,2014-03-03 18:30:00 表示法只是一个没有有趣名称的常规字符串,如果您不提供时区,则它假定为当地时间。

此信息取自MDN article about Date.parse()

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2011-05-30
    • 2023-03-25
    • 2011-01-13
    • 1970-01-01
    • 2015-11-16
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多