如何在Java 8时间库中获取3个字符的时区显示名称?

How to get 3-character time zone display names in Java 8 time library?

当 DST 处于活动状态时,我可以使用 java.util.TimeZone 打印 EDT,如下所示:

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

想和Java8的新时库一样的三字。我试试这个,但我只得到 ET:

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

有什么方法可以根据 DST 状态在新库中获取 3 个字符的显示名称(EST、EDT、PST、PDT 等)?

你可以这样使用DateTimeFormatter

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

ZoneId 在您的 ZonedDateTime 中实际上没有该信息。