我有一个时区列表,我希望用户从中进行选择。所以,我想我可以调用java.time.ZoneId.getAvailableZoneIds()
并使用getDisplayName
的方法。这会导致很多重复的条目,例如
中欧时间
即使我加上时区偏移量,它们也不是不合时宜的。但是,ZoneId
的 ID 可以区分条目,但如何本地化它们?ID 始终为英文,例如
欧洲/罗马
可以通过在
ZoneId
实例上调用getDisplayName
来获取显示名称的本地化版本。这将需要对getAvailableZoneIds()
的结果进行迭代:
ZoneId.getAvailableZoneIds().stream()
.map(ZoneId::of)
.map(zid -> zid.getDisplayName(TextStyle.FULL, Locale.GERMAN))
.distinct()
.forEach(System.out::println);
请注意用于更改每个区域标题大小的 TextStyle
参数和用于获取唯一结果的 .distinct()
方法。