Получить аббревиатуру от Java TimeZone? - PullRequest
1 голос
/ 16 мая 2019

Мне нужно получить аббревиатуру (в виде строки) для существующего объекта Java TimeZone.Есть ли способ сделать это без прямого сопоставления?

Eg- TimeZone     -  ("America/Los_Angeles") 
    Abbreviation -  PDT

Ответы [ 2 ]

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

java.time

Я предлагаю, чтобы аббревиатура, которую вы хотите для America/Los_Angeles, была бы PT для Тихоокеанского времени .Это имя и эта аббревиатура могут использоваться в течение всего года независимо от летнего времени (DST).В отличие от этого PDT относится к тихоокеанскому летнему времени , поэтому используется только летом.

    ZoneId zone = ZoneId.of("America/Los_Angeles");

    System.out.println("Summer time neutral abbreviation: "
            + zone.getDisplayName(TextStyle.SHORT_STANDALONE, Locale.ENGLISH));

Выход:

Аббревиатура нейтрального летнего времени: PT

Если вы хотите, чтобы сокращение относилось только к этой части года (стандартное время или летнее время):

    DateTimeFormatter zoneAbbreviationFormatter
            = DateTimeFormatter.ofPattern("zzz", Locale.ENGLISH);
    System.out.println("Current abbreviation for either standard or summer time: "
            + ZonedDateTime.now(zone).format(zoneAbbreviationFormatter));

Вывод при работе в мае:

Текущее сокращение для стандартного или летнего времени: PDT

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

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

Похоже, вы ищете это:

String s = TimeZone.getTimeZone("America/Los_Angeles")
                   .getDisplayName(false, TimeZone.SHORT);
...