【问题标题】:What is the default time zone for an XML Schema dateTime if not specified?如果未指定,XML Schema dateTime 的默认时区是什么?
【发布时间】:2014-01-07 08:00:17
【问题描述】:

我正在尝试确定 XML Schema dateTime 的默认时区是什么,但它并不具体。最后的时区部分是可选的,可以省略:

2013-01-11T16:02:55

我在this answer 中读到,未指定时区时未确定。我在 cmets 中读到 this question,如果未指定,则默认为 UTC。我还阅读了W3C definition 并没有给我一个明确的答案。

任何专家可以指出这是在哪里指定的吗?

【问题讨论】:

    标签: datetime timezone xsd


    【解决方案1】:

    未指定的时区正是 - 未指定。不多也不少。这不是说它是 UTC,也不是说它是在本地时区或任何其他时区,它只是说从某个时钟读取的时间是那个时间。

    它起源于xs:dateTime 的事实并没有真正发挥作用。它只是一个 ISO 8601 日期 + 时间(无时区)值。

    这真的取决于你用这个值做什么它的实际含义。

    在现实世界中,您可能应该在使用 timestamps 时避免使用这样的值 - 即发生某事的确切时刻。对于那些你应该指定一个偏移量,比如-07:00,或者一个Z来表示UTC。

    未指定的值可能具有合法用途:

    • 当按重复模式安排未来事件时,并与时区配对(例如America/New_York)。详情见我hereherehere的其他回答。

    • 当提到“浮动”时间时,它可能是在多个时区的不同瞬时时刻。示例:晚上 7:00 开始的网络电视节目。美国东部会先于美国西部看到它,但它仍然在每个区域以相同的“浮动”时间播出。

    • 当时区已经被其他机制知道,并且不存在夏令时模糊的风险,或者当风险被接受并被确定为无关紧要时。

    【讨论】:

    • 对,我理解“未指定”的含义,但我首先尝试确认“如果未指定,默认为 UTC”的断言是否为真。我可以更深入地研究 8601,但 XML Schema 规范并没有说它严格使用 8601。例如,“本建议中描述的日期和时间数据类型 [ISO 8601]启发。”
    • 有趣的是,关于 8601 的 Wikipedia article 表示“如果没有给出带有时间表示的 UTC 关系信息,则假定时间为本地时间。”
    • 维基百科文章中那个特定句子的措辞有点误导。它上面的句子更好:“......表示为当地时间(未指定位置)......”。另一种思考方式是“A 本地时间”与“THE 本地时间”。换句话说,“本地”并不一定意味着您的本地,它可能是其他人的本地。
    • 关于 W3C XSD 与 ISO 8601 不完全匹配的观点是正确的,但它确实严重依赖它。这在规范in Appendix D 中进行了讨论,并且还显示了它是如何偏离的。我在任何地方都找不到它说 UTC 被推断为默认值。
    • 根据 ISO 规范 (ISO8601:2004E) 第 4.3.2 节包含此位“如果使用本地时间,则区域指示符为空......”,并且“本地时间”定义为第 2.1.16 节为“当地适用的一天中的时间,例如一天中的标准时间,或基于非 UTC 的一天中的时间”。同样,它没有说明 它是谁的本地 - 只是它是一个非 UTC 值,适用于本地某处
    【解决方案2】:

    在 XSD 1.0 中,sec. 3.2.7 说(秒。“未时区时间被假定为某个未指定地点的时区中的时间”。在我看来,这似乎很清楚地表明它们不会默认为 UTC 进行验证目的,并且它们不会默认为任何固定位置(例如服务器的时间)的本地时间。第 3.2.7.4 节描述(在一些细节和冗长的篇幅中)dateTime 上的排序关系是偏序的,不是总订单,因为(例如)未分区的值 2000-01-20T12:00:00 既不绝对早于,也不绝对晚于,也不绝对等于 2000-01-20T12:00:00Z。

    XSD 1.1 对讨论的文本进行了很多修改,但结果是一样的。

    我认为这符合 ISO 8601 中的规则。

    应用程序如何使用未分区的值,以及其他规范如何处理它们,是一个单独的问题,需要逐个应用程序和逐个规范来回答。但对于 XSD 而言,很明显没有默认时区。

    【讨论】:

      猜你喜欢
      • 2011-01-07
      • 1970-01-01
      • 2020-04-06
      • 1970-01-01
      • 1970-01-01
      • 2021-11-15
      • 2012-07-05
      • 1970-01-01
      相关资源
      最近更新 更多