J'ai eu un problème en obtenant le ZoneRules
pour un fuseau horaire en Java. J'ai un TimeZone
et je suis en train de l'ZoneRules
en utilisant ce code:Exception lors de l'obtention des règles de zone d'un fuseau horaire Java?
TimeZone tz = getTimeZone();
ZoneRules rules = ZoneRulesProvider.getRules(tz.toZoneId().getId(), true);
Lorsque le fuseau horaire est régional (comme "Asia/Dubai"
par exemple), il fonctionne correctement. Mais quand il est un décalage comme "GMT-07:00"
, il lance une exception:
"ZoneRulesException: Unknown time-zone ID: GMT-07:00".
J'ai imprimé toute la sortie de ZoneRulesProvider.getAvailableZoneIds()
et il semble qu'il n'y ait pas de zone comme "GMT-07:00"
mais il y a une zone "Etc/GMT-7"
.
Quelqu'un pourrait-il s'il vous plaît expliquer pourquoi la méthode toZoneId
de la classe retourne TimeZone
un ZoneId
invalide? Quelle est la bonne façon de convertir un TimeZone
en un ZoneId
valide.
Merci Guenther. Je n'ai jamais pensé à vérifier les ID de fuseau horaire disponibles, donc je ne savais pas que GMT -07: 00 était un fuseau horaire personnalisé. Ceci est également expliqué dans la documentation de la classe TimeZone donc c'est de ma faute si je ne l'ai pas lu. De toute façon, votre code fonctionne très bien. Merci encore. –