获取特定日期和时间的 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);
我正在尝试获取 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);