Как перейти от аббревиатуры часового пояса, например PST, к каноническому расширению локали ⇐ JAVA

Программисты JAVA общаются здесь
Anonymous
Как перейти от аббревиатуры часового пояса, например PST, к каноническому расширению локали

Сообщение Anonymous »

Есть ли в стандартной библиотеке Java или в каком-либо пакете, таком как JodaTime, метод, который может расширить аббревиатуру часового пояса, например PST, до полного имени этого часового пояса, соответствующего языковому стандарту? Например, PST может быть Азией/Манилой, Америкой/Лос-Анджелесом, Америкой/Ванкувером или многими другими в зависимости от того, находится ли пользователь на Филиппинах, в США, Канада и т. д. Я знаю, что getAvailableIDs есть как в JDK, так и в JodaTime, но оба предоставляют исчерпывающий список и не дают никаких указаний по выбору, если пользователь просто говорит PST. В идеале должно быть что-то, что использует Locale для выбора ближайшего или наиболее подходящего часового пояса.
Изменить: мне нужно проверить дальше, но комментарий ниже от Anonymous был ответ, который я искал. Следующий код ведет себя так, как мне хотелось бы:

Код: Выделить всё

    ZoneId zone = ZoneId.from(DateTimeFormatter.ofPattern("z", Locale.US).parse("MST"));
System.out.println(zone.getId());

zone = ZoneId.from(DateTimeFormatter.ofPattern("z", Locale.CANADA).parse("MST"));
System.out.println(zone.getId());
результат:

Код: Выделить всё

America/Denver
America/Edmonton
Это работает не идеально, например Locale.CHINA и CST по-прежнему отображают Америку/Чикаго вместо часового пояса в Китае, но это намного ближе, чем гадать, когда мы получаем в качестве входных данных неоднозначный часовой пояс.

Подробнее здесь: https://stackoverflow.com/questions/791 ... sion-for-t

Вернуться в «JAVA»