Есть ли в стандартной библиотеке 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());
результат:
Это работает не идеально, например Locale.CHINA и CST по-прежнему отображают Америку/Чикаго вместо часового пояса в Китае, но это намного ближе, чем гадать, когда мы получаем в качестве входных данных неоднозначный часовой пояс.
Подробнее здесь:
https://stackoverflow.com/questions/791 ... sion-for-t