Получить часовой пояс области с кодом страны в Java - PullRequest
0 голосов
/ 24 мая 2018

Я должен передать сообщение (jms) с информацией о часовом поясе, например (America / Los_Angeles), но у меня есть только название страны и код.Если это возможно, получите информацию о часовом поясе с кодом Java.Где-то я читал это:

System.out.println(TimeZone.getTimeZone("US"));

Но его выдача выводится как

sun.util.calendar.ZoneInfo[id="GMT",offset=0,dstSavings=0,useDaylight=false,transitions=0,lastRule=null]

Я ожидаю Список "America / Los_Angeles", ...

Ответы [ 3 ]

0 голосов
/ 24 мая 2018

Согласно документации, метод getTimeZone возвращает указанную TimeZone или зону GMT, если данный идентификатор не может быть понят.Там нет идентификатора TimeZone с именем US , следовательно, он дает зону GMT.Если вы действительно хотите получить весь список часовых поясов, доступных в США, я бы посоветовал вам использовать следующее.

final List<String> timeZonesInUS = Stream.of(TimeZone.getAvailableIDs())
        .filter(zoneId -> zoneId.startsWith("US")).collect(Collectors.toList());
0 голосов
/ 29 мая 2019

Встроенные классы Java этого не предлагают, но Класс TimeZone ICU делает, а TimeZone.getAvailableIDs("US") дает правильный ответ.

0 голосов
/ 24 мая 2018

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

https://garygregory.wordpress.com/2013/06/18/what-are-the-java-timezone-ids/

Просмотр API для часовых поясов показывает, что невозможно получить список часовых поясов напрямую через TimeZone.getTimeZone().Таким образом, вместо этого вы, вероятно, захотите пройтись по ним и просто посмотреть, какие из них начинаются с названия страны и добавить их в список, например:

public static List<String> GetZones(String country) {
    List<String> zones = new ArrayList<>();

    for (String i : TimeZone.getAvailableIDs()) {
        if (i.startsWith(country)) {
            zones.add(i);
        }
    }
    return zones;

}
...