我正在尝试确定XML Schema dateTime的默认时区是什么,当它不是特定的时候。末尾的时区部分是可选的,可以省略:
2013-01-11T16:02:55
我在this answer中读到,未指定时区未确定。我在this question的评论中读到,如果没有指定,则默认为UTC。我还通读了W3C definition,并没有给我一个明确的答案。
有专家能否指出我指定的位置?
答案 0 :(得分:10)
未指定的时区就是 - 未指定。不多也不少。它不是说它是在UTC中,也不是说它在当地时区或任何其他时区,它只是说从某个时钟读取的时间就是那个时间。
它起源于xs:dateTime
的事实并没有真正发挥作用。它只是ISO 8601日期+时间(没有时区)值。
这取决于你做什么这个值实际意味着什么。
在现实世界中,使用 timestamps 时可能应该避免使用这样的值 - 也就是说,某些事情发生的确切时刻。对于那些,您应指定-07:00
或Z
之类的偏移量来表示UTC。
如果未指定的值可能具有合法用途:
答案 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而言,很明显没有默认时区。