如何在java中从时区ID获取国家代码?
我想获取字符串[],该字符串具有适用于zoneId的国家/地区ISO代码,例如“AS”、“AL”、“AU”?我认为最好的选择是获取这些IANA文件:如何在java中从时区ID获取国家代码?,java,timezone,Java,Timezone,我想获取字符串[],该字符串具有适用于zoneId的国家/地区ISO代码,例如“AS”、“AL”、“AU”?我认为最好的选择是获取这些IANA文件: 这些文件包含以下格式的条目: String zoneId = Calendar.getInstance().getTimeZone().toZoneId(); 如果我没记错的话,zone1970.tab是较新的,它涵盖了一个时区被多个国家使用的情况,但您可以检查这两个时区,看看哪一个解决了您的问题 还有一种方法是将国家代码映射到各自的名
String zoneId = Calendar.getInstance().getTimeZone().toZoneId();
如果我没记错的话,zone1970.tab
是较新的,它涵盖了一个时区被多个国家使用的情况,但您可以检查这两个时区,看看哪一个解决了您的问题
还有一种方法是将国家代码映射到各自的名称
我不确定Java是否有直接读取这些文件的API,但看看它们的格式,似乎很难读取它们并找到所需的信息
快速提示:无需调用
Calendar.getInstance().getTimeZone().toZoneId()
如果希望JVM的默认时区作为
ZoneId
对象,只需调用ZoneId.systemDefault()
。如果您希望分区的ID为字符串
(例如欧洲/柏林
或美国/纽约
),只需调用ZoneId.systemDefault().getId()
,这有意义吗?一个时区有更多的国家。。。请参阅ZoneIds的javadocs:它不会编译,因为toZoneId()
返回一个ZoneId
(不是String
;但您可以附加.toString()
来拥有一个)@Paolof76:如果区域ID是区域/城市格式,例如,应该是太平洋/檀香山格式,那么它是有意义的。但我担心这需要一个地理数据库。是否有第三方api或其他东西可以将“地区/城市”格式转换为相应的国家ISO代码或国家名称。
#codes coordinates TZ comments
AD +4230+00131 Europe/Andorra
AE,OM +2518+05518 Asia/Dubai
AF +3431+06912 Asia/Kabul