为什么java.time.ZoneOffset实例排序时会“倒序”?

10

根据文档

偏移量按照全球相同时间顺序进行比较。 因此,+10:00的偏移量排在+09:00的偏移量之前,以此类推直到-18:00。

有人知道它们被按这种方式排序的原因吗? 这似乎与偏移量的数值相反的直觉。 它也与它们出现的顺序相反,在GMT / UTC +0居中的地图上从左到右阅读。

(另外:我也不理解引用的文档为什么会提到“下降到-18:00”。 -12:00或-24:00我能理解。 为什么是-18:00? 如果您打印所有支持的java.time.ZoneId时区的偏移量,它们的范围从-11:00到+12:00。)

更新:关于我的疑问,文档中的其他地方有回答:

2008年,全球各地的时区偏移量从-12:00延伸到+14:00。 为了避免该范围被扩展而导致任何问题,但仍然提供验证,偏移量的范围限制为包括-18:00至18:00在内。

1个回答

6

假设你有一个本地化日期/时间列表,包括事件发生时的相关时区:

(1) 2016/05/26 00:00:00 in Australian Eastern Standard Time (UTC+10)
(2) 2016/05/26 00:00:00 in Greenwich Mean Time (UTC+0)
(3) 2016/05/26 00:00:00 in Japan Standard Time (UTC+9)

您可以将这些转换为一个单一的时区(例如GMT)中的时间戳:

(1) 2016/05/25 14:00:00 GMT
(2) 2016/05/26 00:00:00 GMT
(3) 2016/05/25 15:00:00 GMT

现在按照“发生的先后顺序”对它们进行排序:

(1) 2016/05/25 14:00:00 GMT
(3) 2016/05/25 15:00:00 GMT
(2) 2016/05/26 00:00:00 GMT

因此,澳大利亚时间(1)早于日本时间(3),而日本时间(3)早于英国时间(2)。

这只是将相同的顺序应用到时区:正如引用所说:

偏移量按照世界各地每天相同的时间顺序进行比较

因此,澳大利亚东部标准时间被认为“在”日本标准时间之前,后者被认为“在”格林威治标准时间之前。


当然,另一种理解为什么它是“反向”的方式是因为日光在世界地图上也是“反向”的(http://www.yellowpagesoftheworld.com/world/world-map.htm)! - Andy Turner
非常好的回答。我再补充一种思考方式:新的一天在东方到来(地球自转)。例如,东京证券市场比伦敦市场早开,伦敦市场比纽约市场早开,纽约市场比芝加哥市场早开。在java.time使用的ISO 8601标准中,我们使用加号表示比UTC提前的时区(顺便说一下,其他时间记录者使用减号)。至于从左到右,这只适用于从左到右的语言和北朝上的地图。将南放在顶部,或学习阿拉伯语,以便按时间顺序阅读地图。 - Basil Bourque

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接