String zoneId = Calendar.getInstance().getTimeZone().toZoneId();
我想获取具有国家 ISO 代码的字符串[],例如 zoneId 适用的国家 ISO 代码,例如"AS"、"AL"、"AU"?
我认为最好的选择是获取这些 IANA 的文件:
- https://github.com/eggert/tz/blob/main/zone.tab
- https://github.com/eggert/tz/blob/main/zone1970.tab
这些文件具有以下格式的条目:
#codes coordinates TZ comments
AD +4230+00131 Europe/Andorra
AE,OM +2518+05518 Asia/Dubai
AF +3431+06912 Asia/Kabul
如果我没记错的话,zone1970.tab
是较新的,涵盖了多个国家/地区使用时区的情况,但您可以同时检查两者,看看哪一个可以解决您的问题。
还有iso3166.tab文件,它将国家代码映射到各自的名称。
我不确定Java是否有直接读取这些文件的API,但是从它们的格式来看,阅读它们并找到您想要的信息似乎很困难。
**快速说明**:无需调用"Calendar.getInstance((.getTimeZone((.toZoneId(("。
如果您希望 JVM 的默认时区作为ZoneId
对象,只需调用 ZoneId.systemDefault()
即可。如果您希望区域 ID 作为String
(例如 Europe/Berlin
或 America/New_York
(,只需调用 ZoneId.systemDefault().getId()
。