为什么java.time.ZoneOffset实例要"向后"排序?



来自文档:

偏移量按世界各地一天中同一时间发生的顺序进行比较。因此,+10:00的偏移量先于+09:00的偏移量,依此类推,直到-188:00。

有人知道他们被这样订购的原因吗?这似乎与直觉相反,因为它与偏移的数值顺序相反。这也与它们在以GMT/UTC+0为中心的地图上从左到右的显示顺序相反。

(顺便说一句:我不明白为什么引用的文档提到"向下到-18点"。-12点或-24点我都能理解。为什么是-18点?如果你打印出所有支持的java.time.ZoneId时区的偏移量,它们的范围从-11点到+12点。)

更新:对我的旁白的回答。来自同一文档中的其他地方:

2008年,世界各地的时区偏移量从-12:00扩展到+14:00。为了防止该范围被扩展的任何问题,但仍然提供验证,偏移范围被限制为-18:00到18:00(包括18:00)。

想象一下,您有一个本地化日期/时间列表,以及某个事件发生的相关时区:

(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)之前,日本时间在英国时间(2)之前。

它只是将相同的顺序应用于时区:正如报价所说:

偏移量按照它们在世界各地一天中同一时间发生的顺序进行比较

因此,澳大利亚东部标准时间被视为"先于"日本标准时间,而日本标准时间被认为是"先于"格林尼治标准时间。

相关内容

  • 没有找到相关文章

最新更新