У меня возникла проблема получения ZoneRules
для часового пояса на Java. У меня есть TimeZone
, и я пытаюсь к ZoneRules
с помощью этого кода:Исключение при получении правил зоны Java TimeZone?
TimeZone tz = getTimeZone();
ZoneRules rules = ZoneRulesProvider.getRules(tz.toZoneId().getId(), true);
Когда временная зона является региональным (как "Asia/Dubai"
, например), он работает правильно. Но когда это смещение как "GMT-07:00"
, он бросает исключение:
"ZoneRulesException: Unknown time-zone ID: GMT-07:00".
Я напечатал всю продукцию ZoneRulesProvider.getAvailableZoneIds()
и, кажется, там нет зоны, как "GMT-07:00"
но есть зона "Etc/GMT-7"
.
Может ли кто-нибудь объяснить, почему метод toZoneId
класса TimeZone
возвращает недопустимый ZoneId
? Каков правильный способ преобразования TimeZone
в действительный ZoneId
.
Спасибо вам Гюнтер. Я никогда не думал проверять доступные идентификаторы часовых поясов, поэтому я не знал, что GMT-07: 00 - это пользовательский часовой пояс. Это также объясняется в документации для класса TimeZone, поэтому я виноват, что не прочитал его. В любом случае, ваш код отлично работает. Еще раз спасибо. –