преобразование часового пояса в 3 символа - PullRequest
0 голосов
/ 14 сентября 2018

Я хочу преобразовать TimeZone, такой как «Америка / Чикаго», в «CST».Я могу использовать карту SHORT_IDS класса ZoneID.Однако на этой карте настроено ограниченное количество часовых поясов.Что делать, если я хочу получить "Asia / Hong_Kong" для "HKT", тогда эта карта не даст мне правильный ответ.

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

Буду признателен за любой совет.

Ответы [ 2 ]

0 голосов
/ 14 сентября 2018
    ZoneId hongKong = ZoneId.of("Asia/Hong_Kong");
    System.out.println(hongKong.getDisplayName(TextStyle.SHORT_STANDALONE, Locale.ROOT));

Это выводит:

HKT

Аналогично, выход для ZoneId.of("America/Chicago") равен CT для Центральное время (уведомлениечто это позволяет избежать безнадежного выбора между CST для центрального стандартного времени и CDT для центрального летнего времени).

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

В отличие от устаревшего класса TimeZone современный ZoneId проверяет строку часового поясаи выдает исключение, если оно недопустимо, поэтому мы получаем хороший шанс исправить любые ошибки.Например:

java.time.DateTimeException: неверный идентификатор для ZoneId на основе региона, недопустимый формат: Азия / Гонконг

0 голосов
/ 14 сентября 2018

Использование TimeZone.getDisplayName:

TimeZone.getTimeZone("America/Chicago").getDisplayName(false, TimeZone.SHORT)

Ideone demo

Но будьте очень осторожны при использовании трехбуквенные идентификаторы часовых поясов. Только использовать их для отображения (как следует из названия метода);в противном случае не используйте их для определения часового пояса.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...