Получите трехбуквенное сокращение часового пояса для определенной даты и времени

Я пытаюсь получить 3-х буквенное сокращение часового пояса в Android. Я использовал следующее:

TimeZone timeZone = TimeZone.getTimeZone("America/Los_Angeles");
timeZone.getDisplayName(true, TimeZone.SHORT);

Это дает PDT правильно. Но если мне нужно отобразить это для даты в ноябре, это не дает мне 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);

Но все же я получаю ФДТ. Я что-то упускаю? Или есть альтернативный способ?

1 ответ

Решение

Первый параметр должен быть установлен в false, если вы хотите стандартное время - см. Javadoc:

daylight - значение true, указывающее название летнего времени, или значение false, указывающее название стандартного времени.

Решение:

Date date = ...;
boolean dst = timeZone.inDaylightTime(date);
timeZone.getDisplayName(dst, TimeZone.SHORT);
Другие вопросы по тегам