ZoneId ID的本地化名称

时间:2017-11-02 08:45:43

标签: java java-8 timezone

我有一个我想让用户选择的时区列表。所以,我想我可以拨打java.time.ZoneId.getAvailableZoneIds()并在其上使用方法getDisplayName。这导致了许多重复的条目,如

  

中欧时间

即使我添加了时区偏移量,它们也不会是无情的。但是,ZoneId的ID会区分条目,但如何对其进行本地化? ID始终为英文,如

  

欧洲/罗马

1 个答案:

答案 0 :(得分:6)

通过调用getDisplayName实例上的ZoneId,可以获得显示名称的本地化版本。这需要迭代getAvailableZoneIds()

的结果
ZoneId.getAvailableZoneIds().stream()
        .map(ZoneId::of)
        .map(zid -> zid.getDisplayName(TextStyle.FULL, Locale.GERMAN))
        .distinct()
        .forEach(System.out::println);

请注意TextStyle参数更改每个区域标题和.distinct()方法的大小以获得唯一结果。