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

时间:2013-12-18 22:44:46

标签: datetime timezone xsd

我正在尝试确定XML Schema dateTime的默认时区是什么,当它不是特定的时候。末尾的时区部分是可选的,可以省略:

2013-01-11T16:02:55

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

有专家能否指出我指定的位置?

2 个答案:

答案 0 :(得分:10)

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

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

这取决于你做什么这个值实际意味着什么。

在现实世界中,使用 timestamps 时可能应该避免使用这样的值 - 也就是说,某些事情发生的确切时刻。对于那些,您应指定-07:00Z之类的偏移量来表示UTC。

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

  • 按重复发生模式安排 future 事件,并与时区(例如America/New_York)配对。有关详细信息,请参阅我的hereherehere的其他答案。

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

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

答案 1 :(得分:3)

在XSD 1.0中,sec. 3.2.7表示(秒。“未定时的时间被假定为某些未指定地点的时区中的时间”。在我看来,这显然表明它们不默认为UTC用于验证目的,并且它们不会默认为任何固定位置的本地时间(例如服务器的时间)。第3.2.7.4节描述(在某些细节和繁琐的长度),dateTime上的排序关系是部分的订单,而不是总订单,因为(例如)untimezoned值2000-01-20T12:00:00既不早于2000-01-20T12:00:00Z,也不一定晚于,也不一定等于2000-01-20T12:00:00Z。

XSD 1.1对讨论的内容进行了很好的修改,但它也是一样的。

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

应用程序对untimezoned值的作用以及其他规范对它们的作用是一个单独的问题,需要按应用程序和规范来应答。但是对于XSD而言,很明显没有默认时区。