В Joda Time эти псевдонимы можно разрешить с помощью DateTimeZone.forID(id).getID(), поскольку DateTimeZone.forID() следует по этим ссылкам, чтобы вернуть канонический часовой пояс.
Можно ли сделать что-то подобное с java.time API?
Некоторые вещи, которые я пробовал:
- выдаст исключение, если идентификатор не существует, но не будет разрешать ссылки: ZoneId.of("Europe/Skopje").getId() возвращает "Europe/Skopje", а не "Europe/Belgrade".
Код: Выделить всё
ZoneId.of(id) - канонизирует только часовые пояса с фиксированным смещением, поэтому, как я вижу, здесь нет ничего полезного.
Код: Выделить всё
ZoneId.of(id).normalized() - Все эти часовые пояса возвращаются ZoneId.getAvailableZoneIds(), и можно запросить правила каждого из них через ZoneId.getRules(), поэтому, учитывая, что правила будут одинаковыми для канонической зоны и всех связанных зон, это Можно определить, что, скажем, Европа/Белград, Европа/Скопье и Европа/Загреб эквивалентны, но невозможно определить, какой из них является каноническим. (Я также не совсем уверен, что наличие равных правил обязательно означает, что два часовых пояса обязательно связаны.)
Подробнее здесь: https://stackoverflow.com/questions/783 ... -time-apis