从Java TimeZone获得缩写吗?

时间:2019-05-16 11:19:47

标签: java datetime java-8 java-date

我需要获取现有Java TimeZone对象的缩写(作为String)。没有直接映射,有没有办法做到这一点?

Eg- TimeZone     -  ("America/Los_Angeles") 
    Abbreviation -  PDT

2 个答案:

答案 0 :(得分:3)

看起来您正在寻找它:

String s = TimeZone.getTimeZone("America/Los_Angeles")
                   .getDisplayName(false, TimeZone.SHORT);

答案 1 :(得分:3)

java.time

我建议您为America/Los_Angeles的缩写应为太平洋时间PT。不论夏令时(DST),此名称和此缩写都可以全年使用。相比之下,PDT用于太平洋夏令时,因此仅在夏季使用。

    ZoneId zone = ZoneId.of("America/Los_Angeles");

    System.out.println("Summer time neutral abbreviation: "
            + zone.getDisplayName(TextStyle.SHORT_STANDALONE, Locale.ENGLISH));

输出:

  

夏令时中性缩写:PT

如果您只想与一年中的这一部分(标准时间或夏季时间)相关的缩写,则:

    DateTimeFormatter zoneAbbreviationFormatter
            = DateTimeFormatter.ofPattern("zzz", Locale.ENGLISH);
    System.out.println("Current abbreviation for either standard or summer time: "
            + ZonedDateTime.now(zone).format(zoneAbbreviationFormatter));

五月份运行时的输出:

  

当前标准时间或夏季时间的缩写:PDT

请替换您所需的语言环境。对于许多语言环境而言,这没有什么区别,但是某些时区在某些语言环境中具有本地化的缩写。