String zoneId = Calendar.getInstance().getTimeZone().toZoneId();
我想获得一个String[]数组,其中包含适用于特定区域的国家ISO代码,例如"AS","AL","AU"?
我认为最好的替代方案是获取这些IANA文件:
那些文件的条目格式如下:#codes coordinates TZ comments
AD +4230+00131 Europe/Andorra
AE,OM +2518+05518 Asia/Dubai
AF +3431+06912 Asia/Kabul
zone1970.tab
是较新的文件,包括一个时区被多个国家使用的情况,但你可以检查两个文件并看哪个可以解决你的问题。ZoneId
对象获取,只需调用ZoneId.systemDefault()
。如果您想要该时区的ID作为String
(例如Europe/Berlin
或America/New_York
),只需调用ZoneId.systemDefault().getId()
。
toZoneId()
返回一个ZoneId
(而不是一个String
;但您可以附加.toString()
来获得一个)。@Paolof76:如果区域/城市格式的区域ID是有意义的,例如夏威夷太平洋/檀香山,那么它应该是这样的。但我担心这将需要某种地理数据库。 - Ole V.V.