java.time的区域名称的官方列表在哪里?

2022-09-03 03:55:46

是否有用于以下各项的区域名称的正式列表:

zoneId = ZoneId.of("America/New_York")

或者java.time.ZoneId是否可以生成我可以使用的列表本身?

我用它来将即时转换为时间的字符串表示形式,例如:

ZoneDateTime.ofInstant(instant, zoneId).format(DateTimeFormatter.ofPattern("..."))

答案 1

只需使用 getAvailableZoneIds 方法即可。

获取可用区域 ID 的集合。

此集包括所有可用的基于区域的 ID 的字符串形式。基于偏移的区域 ID 不包括在返回的集中。可以将 ID 传递给 of(String) 以创建 ZoneId。

Set<String> zoneIds= ZoneId.getAvailableZoneIds();

for (String zone : zoneIds) {
    System.out.println(zone);
}

答案 2

正如其他答案所说,在代码中获取此列表的方法是使用ZoneId.getAvailableZoneIds()

但是,如果您只是浏览想要一个“官方”列表,则数据可从IANA获得,但这是针对机器的格式。仔细阅读数据的最简单方法是在维基百科上。(通常的免责声明是维基百科...)

您还应该知道,如果目标 JRE 中最近未更新对 IANA/维基百科数据所做的更改,则该数据可能不存在。


推荐