获取特定日期和时间的 3 个字母的时区缩写

Get 3-letter timezone abbr for a particular date and time

我正在尝试获取 Android 中的 3 个字母的时区缩写。我使用了以下内容:

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。有什么我想念的吗?或者有其他方法吗?

如果需要标准时间,第一个参数必须设置为 false - 参见 javadoc:

daylight - true specifying a Daylight Saving Time name, or false specifying a Standard Time name

解决方案:

Date date = ...;
boolean dst = timeZone.inDaylightTime(date);
timeZone.getDisplayName(dst, TimeZone.SHORT);