我一直在为国际应用程序解析日期时间字符串。我遇到了一个解释问题,我似乎无法找到明确的答案。 将没有时区组件的ISO 8601日期时间字符串视为本地时间吗?
每 维基百科 (我不想根据我的业务决定):
如果没有给出时间表示的UTC关系信息,
假设时间是在当地时间。
但是,我无法通过ISO或任何其他普遍接受的事实来源找到支持文档。我发现的所有内容都谈到了如何处理当地时间的偏移(例如+/- 0500等)。假设在这些情况下的当地时间对我有很大帮助,因为我的用户可以为所有区域提交相同的日期,而无需计算每个区域的特定偏移量。
例如:
2012-01-01T00:00:00 # Convert to local
2012-01-01T00:00:00Z # Zulu/UTC...don't convert
对于无时区的ISO 8601字符串,是否有既定的解释?
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],这是区别-component如果使用本地时间,并且与UTC的差异符合4.2.5.2。
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],这是区别-component如果使用本地时间,并且与UTC的差异符合4.2.5.2。
如果没有时区指示符,datetime字符串将被解释为本地时间 - 但是作为SERVER的本地时间。
如果您的用户位于不同的时区,他们提交的没有TZ信息的日期将被错误地解释为您的本地TZ偏移。