DateTime ISO 8601没有时区组件

时间:2015-10-13 23:43:41

标签: datetime localization iso8601

我一直在为国际应用解析日期时间字符串。我遇到了一个解释问题,我似乎无法找到明确的答案。 没有时区组件的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字符串是否有既定的解释?

2 个答案:

答案 0 :(得分:11)

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的差异,则是差异成分。

答案 1 :(得分:-1)

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

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