Получить трехбуквенное название часового пояса (в отличие от четырехбуквенного)? - PullRequest
5 голосов
/ 11 мая 2010

Я написал приложение для Android, которому нужно короткое имя часового пояса, в котором в данный момент находится телефон.

Я использую следующий код:

String timeZone = Calendar.getInstance().getTimeZone().getDisplayName(false, TimeZone.SHORT);

При работе в Чикаго возвращается «CST». В Нью-Йорке "EST". В Страсбург, Франция возвращается «HNEC» ( Heure Normale de l'Europe Centrale на французском ).

Часовой пояс в этом месте упоминается некоторыми как "Центральноевропейское время" (см. Часовые пояса Европы в Википедии ).

Я передаю timeZone сторонней системе, которая очень настаивает на получении "CET" (не "HNEC"). Есть ли вызов API, на который я могу рассчитывать, чтобы вернуть трехбуквенное (и, я думаю, «более современное») короткое имя часового пояса?

Поскольку мой код работает во всё большем количестве мест, я предполагаю, что эта проблема возникнет и в других местах.

Я действительно надеюсь избежать какой-либо карты трехбуквенных и четырехбуквенных коротких названий часовых поясов.

Ответы [ 2 ]

6 голосов
/ 11 мая 2010

Извините, но вы, вероятно, застряли, поддерживая отображение. Трехсимвольный на самом деле является более старой, а не более современной версией. Из одноклассников:

Если бы это была моя проблема, я бы получил список поддерживаемых сторонней системой и отобразил его.

1 голос
/ 17 октября 2017

Вы можете просто использовать SimpleDateFormat , чтобы напечатать часовой пояс из трех букв или полного имени. Например:

DateFormat getTimeZoneShort = new SimpleDateFormat("z", Locale.US);
String timeZoneShort = getTimeZoneShort.format(Calendar.getInstance().getTime());

DateFormat getTimeZoneLong = new SimpleDateFormat("zzzz", Locale.US);
String timeZoneLong = getTimeZoneLong.format(Calendar.getInstance().getTime());
...