JavaのタイムゾーンでZoneRules
を取得する際に問題が発生しました。私はTimeZone
を持っていると私はこのコードを使用してZoneRules
しようとしています:Javaタイムゾーンのゾーンルールを取得すると例外が発生しますか?
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"
があります。
TimeZone
クラスのtoZoneId
メソッドが無効なZoneId
を返す理由を教えてください。 TimeZone
を有効なZoneId
に変換する正しい方法は何ですか。
次のコードを試し、公式のタイムゾーンを取得するには、あなたのギュンターありがとうございます。私はGMT -07:00がカスタムIDのタイムゾーンであることを知らなかったので、利用可能なタイムゾーンIDをチェックすることは考えていませんでした。これはTimeZoneクラスのドキュメントでも説明されているので、それを読んでいないのは私のせいです。とにかく、あなたのコードは素晴らしいです。再度、感謝します。 –