我试图在Android中获得3个字母的时区abbr。我使用了以下内容:
TimeZone timeZone = TimeZone.getTimeZone("America/Los_Angeles");
timeZone.getDisplayName(true, TimeZone.SHORT);
这可以正确地提供PDT。但是如果我需要在11月份显示这个日期,它就不会给我PST。所以,我尝试了以下内容:
Calendar newCalendar = Calendar.getInstance();
TimeZone timeZone = TimeZone.getTimeZone("America/Los_Angeles");
newCalendar.setTimeZone(timeZone);
newCalendar.setTime(dateInNovember);
timeZone = newCalendar.getTimeZone();
timeZone.getDisplayName(true, TimeZone.SHORT);
但我仍然得到了PDT。有什么我想念的吗?或者有其他方式吗?
答案 0 :(得分:1)
如果您想要标准时间,则必须将第一个参数设置为false - 请参阅javadoc:
daylight - 指定夏令时名称为true,或为false 指定标准时间名称
解决方案:
Date date = ...;
boolean dst = timeZone.inDaylightTime(date);
timeZone.getDisplayName(dst, TimeZone.SHORT);