这个问题可能很愚蠢,但我无法弄清楚原因。
我想列出所有GMT补偿。一天只有24小时,所以我认为只有24 GMT +/-。
但我发现有26个GMT +/-(GMT,GMT-1到GMT-12,GMT + 1 - > GMT + 14)
请参阅此测试https://www.mkyong.com/java/java-display-list-of-timezone-with-gmt/
有人可以告诉我为什么吗?谢谢!
答案 0 :(得分:4)
实际上significantly more offsets比你原先想象的那样 - 从维基百科的文章中,大约有40篇。
原因是多方面的:
有了这些知识,你应该知道Java ZoneOffset
支持an offset range of +18:00 to -18:00,ZoneOffset.of
接受String
参数。如果确实想要枚举所有已知的可能时区,您可以使用一些字符串操作并以这种方式生成可能的时区(并跟踪那些有效的时区,或者 don' t 抛出一个DateTimeException
),但我把它作为读者的练习。
答案 1 :(得分:0)
由于区域经常被重新定义,java.time类已经计划了更大范围的时区扩展的可能性。
引用java.time.ZoneOffset类文档:
2008年,世界各地的时区抵消时间从-12:00延长至+14:00。为了防止扩展该范围的任何问题,但仍然提供验证,偏移范围限制在-18:00到18:00(包括端点)。