这个问题可能有些愚蠢,但我想不出为什么。
我想列出所有的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/
有人能告诉我为什么吗?谢谢!
这个问题可能有些愚蠢,但我想不出为什么。
我想列出所有的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/
有人能告诉我为什么吗?谢谢!
实际上,与您最初想象的偏移量相比,偏移量要多得多——根据维基百科文章,大约有40个。
原因有多种:
有了这些知识,您应该放心,因为Java的ZoneOffset
支持 +18:00到-18:00的偏移范围,并且ZoneOffset.of
接受一个String
参数。如果您真的想枚举所有已知的可能时区,可以使用一些字符串操作来生成可能的时区(并跟踪那些有效或不会引发DateTimeException
的时区),但我将其留给读者作为练习。
java.time类已经考虑到时区的更广泛传播,因为时区经常被重新定义。
引用java.time.ZoneOffset类文档:
2008年,全球各地的时区偏移量从-12:00到+14:00。为了防止该范围被扩展而产生任何问题,同时仍然提供验证,偏移量的范围限制为-18:00至18:00(含)。