如何在 java 中从时区 ID 获取国家/地区代码


 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/BerlinAmerica/New_York (,只需调用 ZoneId.systemDefault().getId()

相关内容

  • 没有找到相关文章

最新更新