如果未指定,XML架构dateTime的默认时区是什么?

如果未指定,XML架构dateTime的默认时区是什么?,datetime,timezone,xsd,Datetime,Timezone,Xsd,我试图确定XML模式dateTime的默认时区是什么,如果它不是特定的。末尾的时区部分是可选的,可以省略: 2013-01-11T16:02:55 我在信中读到,时区在未指定的情况下是不确定的。我在评论中读到,如果未指定,默认值为UTC。我也通读了这篇文章,但没有给我一个明确的答案 有专家能告诉我这是在哪里指定的吗?一个未指定的时区正是-未指定的。不多也不少。它不是说它是UTC,也不是说它在本地时区或任何其他时区,它只是说从某个时钟读取的时间就是那个时间 它源于xs:dateTime这一事实根

我试图确定XML模式dateTime的默认时区是什么,如果它不是特定的。末尾的时区部分是可选的,可以省略:

2013-01-11T16:02:55
我在信中读到,时区在未指定的情况下是不确定的。我在评论中读到,如果未指定,默认值为UTC。我也通读了这篇文章,但没有给我一个明确的答案


有专家能告诉我这是在哪里指定的吗?

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

它源于xs:dateTime这一事实根本不起作用。它只是一个ISO8601日期+时间(没有时区)值

这实际上取决于你如何处理这个值,以及它的实际含义

在现实世界中,在处理时间戳时,您可能应该避免这样的值——也就是说,某件事情发生的确切时刻。对于这些,您应该指定偏移量,如
-07:00
,或
Z
,以指示UTC

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

  • 按重复模式安排未来事件时,并与时区配对(例如
    美国/纽约
    )。有关详细信息,请参阅我的其他答案,以及

  • 当提到“浮动”时间时,可能是在多个时区的不同瞬间。一个晚上7点开始的网络电视节目。美国东部会在美国西部之前看到它,但它仍然在每个区域的相同“浮动”时间播放

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

在XSD 1.0中,说(第二节),“未分区时间被假定为某个未指定位置的时区中的时间”。在我看来,这似乎是一个非常清楚的迹象,表明它们不会出于验证目的默认为UTC,也不会为任何固定位置(例如服务器的时间)默认为本地时间。第3.2.7.4节描述了(在某些细节和冗长乏味的篇幅中)dateTime上的排序关系是部分顺序,而不是总顺序,因为(例如)未分区值2000-01-20T12:00:00既不一定早于、也不一定晚于、也不一定等于2000-01-20T12:00:00Z

XSD1.1对讨论的文本进行了大量的修改,但结果是相同的

我相信这与ISO8601中的规则是一致的


应用程序如何处理未分区的值,以及其他规范如何处理这些值,这是一个单独的问题,需要逐个应用程序和规范逐一回答。但出于XSD的目的,显然没有默认时区。

对,我理解“未指定”的含义,但我首先尝试确认“如果未指定默认值,则为UTC”是正确的。我可以更深入地了解8601,但XML模式规范没有说它严格使用8601。例如,“本建议中描述的日期和时间数据类型受[ISO 8601]的启发。”有趣的是,about 8601说如果没有使用时间表示法给出UTC关系信息,则假定时间为当地时间。“维基百科文章中该特定句子中的措辞有点误导性。其右上方的句子更好:“……表示为当地时间(未指定位置)”。另一种思考方式是”“当地时间”与“当地时间”。换句话说,“当地时间”“这不一定意味着你的本地,它可能是其他人的本地。W3C XSD与ISO 8601不完全匹配,这一点你是正确的,但它确实严重依赖于它。规范中讨论了这一点,并说明了它是如何偏离的。我找不到它说UTC是默认值。根据ISO规范(ISO8601:2004E)第4.3.2节包含此位“如果使用当地时间,则区域指示器为空…”,第2.1.16节将“当地时间”定义为“当地适用的时间,如标准时间,或非基于UTC的时间”。同样,它没有说明它是谁的本地值-只是它是一个非UTC值,在本地适用于某个地方。