我需要获取现有Java TimeZone对象的缩写(作为String)。没有直接映射,有没有办法做到这一点?
Eg- TimeZone - ("America/Los_Angeles")
Abbreviation - PDT
答案 0 :(得分:3)
看起来您正在寻找它:
String s = TimeZone.getTimeZone("America/Los_Angeles")
.getDisplayName(false, TimeZone.SHORT);
答案 1 :(得分:3)
我建议您为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
请替换您所需的语言环境。对于许多语言环境而言,这没有什么区别,但是某些时区在某些语言环境中具有本地化的缩写。