为什么 XSD 规范接受具有 -14H 的时区?
Why XSD spec accepts timezones having -14H?
我在 xquery 中使用一些 dateTime 函数,我注意到 xquery 接受时区为 -14 小时的日期。
查看维基百科 link I can see the minimum allowed timezone is -12H, but the xpath functions 似乎允许 -14H。我错过了什么吗?
它来自 ISO,它在两个方向上都是 14。虽然目前没有区域将其时间定义为 -14,但有些区域将其定义为 +14(汤加)并且 Etc/GMT-14 是 -14:00 偏移量。
世界各地的时区
虽然 +/-12 小时(换句话说:一天)足以跨越整个世界,但有理由进一步偏离。一个很好的例子是汤加和萨摩亚 +13h,实际上是 以西 Howland 和 Baker Island 有 -12h。这是有道理的:豪兰岛和贝克岛隶属于美国(在西岸有 -8h),而对于汤加和萨摩亚来说,与澳大利亚和新西兰的贸易更为重要。基里巴斯和莱恩群岛甚至默认为 +14h。
时区变化
时区会不时更改。尤其是在日期边界附近,恰好各国认为与日期区"on the other side"的另一个国家的贸易和合作更为重要,并调整自己的时区以便于沟通。 Samoa actually changed their timezone just recently.
允许 +/-14h 提供 一些 考虑到政治变化的灵活性,而不需要更改规范。不过,+14h 似乎有点武断;希望法属波利尼西亚(或任何其他与欧洲关系比美洲更密切的小岛)不要考虑将时区更改为 +15h。
有趣的问题。 XSD 1.0 在 one place
中表示
All timezoned times are Coordinated Universal Time (UTC, sometimes called "Greenwich Mean Time"). Other timezones indicated in lexical representations are converted to UTC during conversion of literals to values. "Local" or untimezoned times are presumed to be the time in the timezone of some unspecified locality as prescribed by the appropriate legal authority; currently there are no legally prescribed timezones which are durations whose magnitude is greater than 14 hours.
在another中说:
Based on timezones currently in use, [the value 2000-01-20T12:00:00Z] could vary from 2000-01-20T12:00:00+12:00 to 2000-01-20T12:00:00-13:00. It is, however, possible for this range to expand or contract in the future, based on local laws. Because of this, the following definition uses a somewhat broader range of indeterminate values: +14:00..-14:00.
这对我来说表明 Jens Erat 的建议(允许偏移量比目前已知需要的任何偏移量大一点,以防万一)非常准确。我没有查阅相关时期 XSD WG 的讨论列表,看是否提出了其他论点。
至于某些司法管辖区或其他司法管辖区转移到 +15:00 偏移量的可能性,JE 是对的,这可能有点尴尬。这个问题在 XSD 1.0 中似乎不太重要,因为在 1.0 中,时区偏移只是一种词汇现象,与值(始终为 UTC)无关;它在 1.1(以及 XPath 2.0 和相关规范)中似乎更重要,其中时区偏移量 是值的 部分。
但这种抵消转移的主要动机之一似乎(在当时,至少对工作组中的某些人而言)是希望成为第二个千年将首先到来的世界的一部分,随着随之而来的是额外旅游收入的希望。至少,这种动机暂时消失了。
而且无论如何,即使时区偏移量是值的一部分,它与当地民用时间的关系也几乎永远不会简单。许多司法管辖区以不可预测的方式将当地民用时间的偏移量更改为 UTC(不仅仅是为了寻求旅游收入)。任何想要将时间值与当地民用时间相关联的人都必须使用裸 time
值以外的东西,有或没有偏移。 (10:00:00.00-05:00 是说这发生在东部 [标准] 时间 10 点?还是中部 [夏令时] 时间 10 点?标记为 10 a.m 的时间是在东部时间之前还是之后, time 14:30:00.0Z?一般情况下,唯一可能的答案是"yes, probably".)
与闰秒一样,时区偏移也是如此:如果有一种数据类型可以接受所有合法值,拒绝所有虚假值,并且在计算和组织上易于处理,那就太好了。由于我们似乎无法定义这样的类型,因此我们做出了我们可以管理的最佳近似值,然后继续前进。 (为什么解决方案在一种情况下允许看似虚假的值,例如没有司法管辖区实际使用的偏移量,而在另一种情况下不允许实际上合法的值,例如那些落在闰秒内的值?好问题。我能提供的唯一答案是:工作组做出了它可以管理的最佳近似,并且......最终......继续前进。)
我在 xquery 中使用一些 dateTime 函数,我注意到 xquery 接受时区为 -14 小时的日期。
查看维基百科 link I can see the minimum allowed timezone is -12H, but the xpath functions 似乎允许 -14H。我错过了什么吗?
它来自 ISO,它在两个方向上都是 14。虽然目前没有区域将其时间定义为 -14,但有些区域将其定义为 +14(汤加)并且 Etc/GMT-14 是 -14:00 偏移量。
世界各地的时区
虽然 +/-12 小时(换句话说:一天)足以跨越整个世界,但有理由进一步偏离。一个很好的例子是汤加和萨摩亚 +13h,实际上是 以西 Howland 和 Baker Island 有 -12h。这是有道理的:豪兰岛和贝克岛隶属于美国(在西岸有 -8h),而对于汤加和萨摩亚来说,与澳大利亚和新西兰的贸易更为重要。基里巴斯和莱恩群岛甚至默认为 +14h。
时区变化
时区会不时更改。尤其是在日期边界附近,恰好各国认为与日期区"on the other side"的另一个国家的贸易和合作更为重要,并调整自己的时区以便于沟通。 Samoa actually changed their timezone just recently.
允许 +/-14h 提供 一些 考虑到政治变化的灵活性,而不需要更改规范。不过,+14h 似乎有点武断;希望法属波利尼西亚(或任何其他与欧洲关系比美洲更密切的小岛)不要考虑将时区更改为 +15h。
有趣的问题。 XSD 1.0 在 one place
中表示All timezoned times are Coordinated Universal Time (UTC, sometimes called "Greenwich Mean Time"). Other timezones indicated in lexical representations are converted to UTC during conversion of literals to values. "Local" or untimezoned times are presumed to be the time in the timezone of some unspecified locality as prescribed by the appropriate legal authority; currently there are no legally prescribed timezones which are durations whose magnitude is greater than 14 hours.
在another中说:
Based on timezones currently in use, [the value 2000-01-20T12:00:00Z] could vary from 2000-01-20T12:00:00+12:00 to 2000-01-20T12:00:00-13:00. It is, however, possible for this range to expand or contract in the future, based on local laws. Because of this, the following definition uses a somewhat broader range of indeterminate values: +14:00..-14:00.
这对我来说表明 Jens Erat 的建议(允许偏移量比目前已知需要的任何偏移量大一点,以防万一)非常准确。我没有查阅相关时期 XSD WG 的讨论列表,看是否提出了其他论点。
至于某些司法管辖区或其他司法管辖区转移到 +15:00 偏移量的可能性,JE 是对的,这可能有点尴尬。这个问题在 XSD 1.0 中似乎不太重要,因为在 1.0 中,时区偏移只是一种词汇现象,与值(始终为 UTC)无关;它在 1.1(以及 XPath 2.0 和相关规范)中似乎更重要,其中时区偏移量 是值的 部分。
但这种抵消转移的主要动机之一似乎(在当时,至少对工作组中的某些人而言)是希望成为第二个千年将首先到来的世界的一部分,随着随之而来的是额外旅游收入的希望。至少,这种动机暂时消失了。
而且无论如何,即使时区偏移量是值的一部分,它与当地民用时间的关系也几乎永远不会简单。许多司法管辖区以不可预测的方式将当地民用时间的偏移量更改为 UTC(不仅仅是为了寻求旅游收入)。任何想要将时间值与当地民用时间相关联的人都必须使用裸 time
值以外的东西,有或没有偏移。 (10:00:00.00-05:00 是说这发生在东部 [标准] 时间 10 点?还是中部 [夏令时] 时间 10 点?标记为 10 a.m 的时间是在东部时间之前还是之后, time 14:30:00.0Z?一般情况下,唯一可能的答案是"yes, probably".)
与闰秒一样,时区偏移也是如此:如果有一种数据类型可以接受所有合法值,拒绝所有虚假值,并且在计算和组织上易于处理,那就太好了。由于我们似乎无法定义这样的类型,因此我们做出了我们可以管理的最佳近似值,然后继续前进。 (为什么解决方案在一种情况下允许看似虚假的值,例如没有司法管辖区实际使用的偏移量,而在另一种情况下不允许实际上合法的值,例如那些落在闰秒内的值?好问题。我能提供的唯一答案是:工作组做出了它可以管理的最佳近似,并且......最终......继续前进。)