【问题标题】:DateTime ISO 8601 without timezone componentDateTime ISO 8601 没有时区组件
【发布时间】:2015-10-13 23:43:40
【问题描述】:

我一直在为我们的国际应用程序解析日期时间字符串。我遇到了一个解释问题,我似乎无法找到明确的答案。 是否应将不带时区组件的 ISO 8601 日期时间字符串视为本地时间?

根据wikipedia(我不想以此作为我的业务决策的依据):

如果没有给出带有时间表示的 UTC 关系信息, 时间假定为当地时间。

但是,我无法通过 ISO 或任何其他普遍接受的事实来源找到支持文档。我发现的所有内容都在讨论如何处理本地时间的偏移量(例如 +/- 0500 等)。在这些情况下假设当地时间对我有很大帮助,因为我的用户可以为所有地区提交相同的日期,而无需计算每个地区的具体偏移量。

例如:

2012-01-01T00:00:00 # Convert to local
2012-01-01T00:00:00Z # Zulu/UTC...don't convert

对于无时区的 ISO 8601 字符串是否有既定的解释?

【问题讨论】:

    标签: datetime localization iso8601


    【解决方案1】:

    ISO 8601 的第 4.2.2 节给出了没有 TZ 指示符的示例,说明它们是当地时间。 4.2.4 表示 UTC 时间使用“Z”指示符。当然,它总是提出“当地时间在哪里?”的问题......

    如果根据 4.2.2.2 到 4.2.2.4 使用本地时间,则区域指示符为空,如果根据 4.2.4 使用当天的 UTC,则为 UTC 指示符 [Z],并且是根据 4.2.5.2 使用本地时间和与 UTC 的差异时的差异分量。

    【讨论】:

    • 太棒了,这就是我要找的。 ISO文档不是“公开”免费提供的,这有点蹩脚,这就是我第一次错过它的原因。上帝保佑无论如何上传它的人 :) 用户输入中有一个指定区域的固有属性,因此“位置”方面已经得到处理。
    【解决方案2】:

    如果没有时区指示符,日期时间字符串将被解释为本地时间 -- 但作为 SERVER 的本地时间。

    如果您的用户在不同的时区,他们提交的没有 TZ 信息的日期将被错误地解释为您当地的 TZ 偏移量。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2017-06-30
      • 2019-04-08
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多