首页 > 解决方案 > 如何在 Java 8 时间库中获取 3 个字符的时区显示名称?

问题描述

java.util.TimeZone当 DST 处于活动状态时,我可以按如下方式打印 EDT :

TimeZone.getTimeZone("America/New_York").getDisplayName(true, TimeZone.SHORT) -> Returns "EDT"

我想获得与 Java 8 的新时间库相同的 3 个字符。我试试这个,但我只得到 ET:

ZonedDateTime.now().getZone().getDisplayName(TextStyle.SHORT, Locale.US) -> Returns "ET"

根据 DST 状态,有没有办法在新库中获取 3 个字符的显示名称(EST、EDT、PST、PDT 等)?

标签: javajava-8timezonejava-time

解决方案


你可以使用DateTimeFormatter这种方式

ZonedDateTime.now().format(DateTimeFormatter.ofPattern("z"))

ZoneId在你ZonedDateTime没有准确的信息。


推荐阅读