Получите трехбуквенное сокращение часового пояса для определенной даты и времени
Я пытаюсь получить 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);