我正在使用Android中的ZZZ的基本Java格式来获取时区附加。请在下面找到代码
public static final String DISPLAY_DATE_FORMAT = "MMMM dd, yyyy 'at' hh:mm:ss a zzz";
SimpleDateFormat formatter = new SimpleDateFormat(
DISPLAY_DATE_FORMAT);
formatter.setTimeZone(timeZone);
date = formatter.format(formattedDateTime);
所以我在两个平台中获得的结果是
在6.0.1版中,它显示GMT-04:00,在5.1.1中显示为EST,这有点奇怪。
我也尝试使用以下代码
timeZone.getDisplayName(timeZone.inDaylightTime(formattedDateTime),TimeZone.SHORT);
并得到相同的结果。有什么办法,我可以得到EST而不是GMT附加值。我知道这种方法被按照Oracle编出,但是有什么办法我仍然可以获得三个字母TimeZoneId。
在主流媒体中常见的3-4字母缩写不是正确的时区。他们不是标准化。他们甚至都不是唯一的!
现代日期时间库避免了这些缩写,而是使用适当的时区名称。
请参阅此正确时区名称的列表。它们的格式是continent/region
。例如,America/Montreal
和Asia/Kolkata
。
2016-06-11T12:34.56-07:00 [America/LOS_ANGELES]
您正在使用众所周知的旧日期课程,这些课程众所周知且设计不佳。它们已被Java所取代。Java的大部分时间功能都回到Java 6&7(Threeten-Backport),并进一步适应Android(Threetenabp)。