java - ZoneId ID 的本地化名称

标签 java java-8 timezone

我有一个时区列表,我希望用户从中进行选择。所以,我认为我可以调用 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/

相关文章:

java - 使用 LinkedBlockingQueue 对多线程 java 程序足够好吗?

java - 验证两个 apk 文件是否使用相同的签名

java - IntelliJ 缩短 Cucumber 测试的命令行

javascript - 如何在 JavaScript 中获取浏览器时区

java - 如何根据时区将java日期转换为日期对象?

java - 为什么 ErrorCollector 在声明的时候要求赋值?

java - 自定义任务执行器或 "am I reinventing the wheel?"

java - Java中如何将Object的属性值转换为数组?

java-8 - Java 8 流转换和列表

php - 我的时间戳有什么问题吗?