【问题标题】:Does UTC date string require the format specifier "Z" even if that string includes time offset?UTC 日期字符串是否需要格式说明符“Z”,即使该字符串包含时间偏移?
【发布时间】:2013-01-20 19:03:23
【问题描述】:

例如,

const d = new Date("2012-08-20T15:00:00-07:00");

d 这是一个 UTC 时间,时间偏移 = 07:00。它还需要Z 这样的2012-08-20T15:00:00-07:00Z 吗?这是正确的吗?

如果我使用 Z 获取此字符串并使用 JavaScript 中的 Date.parse() 方法对其进行解析,则会引发错误。不知道怎么回事!

【问题讨论】:

    标签: javascript parsing date utc


    【解决方案1】:

    不,您不应该在时区偏移中包含“Z”。

    来自rfc3339

      Z           A suffix which, when applied to a time, denotes a UTC
                  offset of 00:00; often spoken "Zulu" from the ICAO
                  phonetic alphabet representation of the letter "Z".
    

    “Z”是一个零时间偏移,因此将它包含在一个显式偏移(尤其是非零偏移)是没有意义的。

    【讨论】:

    • 是否有任何 javascript 函数来确定日期字符串是否添加了此偏移量?还是我只使用正则表达式?
    • 抱歉,我不知道 JavaScript 有比使用正则表达式更简单的检查方法。
    【解决方案2】:

    引用W3C note on Date and Time Formats:

    YYYY-MM-DDThh:mm:ss.sTZD(例如 1997-07-16T19:20:30.45+01:00)

    地点:

    [...]

    TZD  = time zone designator (Z or +hh:mm or -hh:mm)
    

    注意上面的字。您或者Zulu指定时区偏移Z(无偏移)。

    【讨论】:

    • 谢谢!这是有道理的:)
    • Z 实际上代表零。 Zulu 这个词只是北约发音“Z”的方式,而不是相反的方式。
    • @TedBigham 不正确,Z 不代表零。每个时区偏移量都分配了一个字母:en.wikipedia.org/wiki/List_of_military_time_zones
    • @speedymcs 重点是 Z 不代表祖鲁语。它只是“Z”,即 00:00 时区。是的,它也因为“Z”而被称为祖鲁语,但反之则不然。如果出于某种疯狂的原因,“Z”时区被命名为南瓜,这里仍然是“Z”,而不是“P”。我猜“代表”这个词不合适。
    • @TedBigham 你说 Z 代表零,我的意思是纠正它。我同意其余的!
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2011-10-06
    • 2017-02-03
    • 1970-01-01
    • 2018-07-18
    • 1970-01-01
    • 1970-01-01
    • 2017-08-04
    相关资源
    最近更新 更多