我有一个时区列表,我希望用户从中进行选择。所以,我认为我可以调用 java.time.ZoneId.getAvailableZoneIds()
并对它们使用方法 getDisplayName
。这会导致很多重复条目,例如
Central European Time
即使我添加了时区偏移量,它们也不是唯一的。但是,ZoneId
的 ID 可区分条目,但如何本地化它们? ID 总是英文的,比如
Europe/Rome
最佳答案
可以通过在 ZoneId
实例上调用 getDisplayName
来获取显示名称的本地化版本。这将需要对 getAvailableZoneIds()
的结果进行迭代:
ZoneId.getAvailableZoneIds().stream()
.map(ZoneId::of)
.map(zid -> zid.getDisplayName(TextStyle.FULL, Locale.GERMAN))
.distinct()
.forEach(System.out::println);
请注意 TextStyle
参数可更改每个区域标题的大小,而 .distinct()
方法可获得独特的结果。
关于java - ZoneId ID 的本地化名称,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/47070956/