Преобразовать смещение часового пояса в текст часового пояса - PullRequest
0 голосов
/ 01 мая 2019

У меня есть строка в формате "2019-04-25T16: 34: 28-05: 00".Я проанализировал строку по времени по шаблону "гггг-ММ-дд'ТХЧ: мм: ссЗ".

DateTimeFormatter df = DateTimeFormat.forPattern(formatStr);
DateTime temp = df.parseDateTime(dateStr);

И это дает мне вывод в DateTime как "2019-04-25T15: 34: 28.000-06: 00".

Пока все это не кажется правильным, но я хочувывод с текстом TimeZone, таким как «04-25-2019 3:34 PM CDT».

Я форматирую объект DateTime с помощью:

DateTimeFormatter format = DateTimeFormat.forPattern("MM-dd-yyyy 
hh:mm a z");

, но я получаю -06: 00 по-прежнемувывод: «25-25-2019 03:34 PM -06: 00».

Как я могу получить название часового пояса, например, «CDT» вместо смещения?

1 Ответ

3 голосов
/ 01 мая 2019

Как я могу получить название часового пояса, например, "CDT" вместо смещения?

Ты не можешь. -05:00 может быть CDT, но это также смещение, которое может применяться к большому количеству других часовых поясов. Например, EST в США, или, возможно, ACT в Бразилии, или PET в Перу, или многие другие ...

Даже если вы хотите ограничить эту проблему часовыми поясами США, учтите, что MST и PDT являются UTC-7, хотя MST применяется круглогодично в большей части Аризоны, в то время как PDT применяется только во время летнее время в тихоокеанском часовом поясе. Если вам дается временная метка летом со смещением -07:00, невозможно определить, к какому из них она относится, даже если она ограничена США.

Другими словами, чтобы узнать, какое сокращение использовать, вы должны указать идентификатор часового пояса (например, America/Los_Angeles), а не просто смещение.

См. Также «Часовой пояс! = Смещение» в теге часового пояса вики .

...