Есть ли способ канонизировать идентификаторы часовых поясов с помощью API java.time?JAVA

Программисты JAVA общаются здесь
Anonymous
Есть ли способ канонизировать идентификаторы часовых поясов с помощью API java.time?

Сообщение Anonymous »

Некоторые часовые пояса являются псевдонимами других часовых поясов. Например, на момент написания Европа/Скопье и Европа/Загреб связаны с Европой/Белградом.
В Joda Time эти псевдонимы можно разрешить с помощью DateTimeZone.forID(id).getID(), поскольку DateTimeZone.forID() следует по этим ссылкам, чтобы вернуть канонический часовой пояс.
Можно ли сделать что-то подобное с java.time API?
Некоторые вещи, которые я пробовал:
  • Код: Выделить всё

    ZoneId.of(id)
    выдаст исключение, если идентификатор не существует, но не будет разрешать ссылки: ZoneId.of("Europe/Skopje").getId() возвращает "Europe/Skopje", а не "Europe/Belgrade".
  • Код: Выделить всё

    ZoneId.of(id).normalized()
    канонизирует только часовые пояса с фиксированным смещением, поэтому, как я вижу, здесь нет ничего полезного.
  • Все эти часовые пояса возвращаются ZoneId.getAvailableZoneIds(), и можно запросить правила каждого из них через ZoneId.getRules(), поэтому, учитывая, что правила будут одинаковыми для канонической зоны и всех связанных зон, это Можно определить, что, скажем, Европа/Белград, Европа/Скопье и Европа/Загреб эквивалентны, но невозможно определить, какой из них является каноническим. (Я также не совсем уверен, что наличие равных правил обязательно означает, что два часовых пояса обязательно связаны.)


Подробнее здесь: https://stackoverflow.com/questions/783 ... -time-apis

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