アジア/香港の場合、LocalDate.parse および ResolverStyle.STRICT が予期しない結果を返す

王林
リリース: 2024-02-13 20:54:07
転載
1195 人が閲覧しました

php エディタ Xiaoxin は、この記事で Java の LocalDate.parse と ResolverStyle.STRICT に関する問題を紹介します。アジアまたは香港でこれらの方法を使用すると、予期しない結果が生じる可能性があります。この問題を調査し、解決策を提供します。

質問の内容

私の入力は 19.12.0009 で、期待値は dec 19 00:00:00 hkt 9 ですが、返された結果は dec 21 00:23:18 hkt 9、なぜ? コードは以下のように表示されます:

DateTimeFormatter formatter = DateTimeFormatter.ofPattern("dd.MM.uuuu")
                        .withResolverStyle(ResolverStyle.STRICT);
LocalDate localDate = LocalDate.parse("19.12.0009", formatter);
Instant instant = Instant.from(localDate.atStartOfDay(ZoneId.of("Asia/Hong_Kong")));
Date resultDate = Date.from(instant);
System.out.println("resultDate" + resultDate);
ログイン後にコピー

Solution

zonerules には遷移の概念があり、 Savinglocaltransitions があります。何らかの理由 (おそらく歴史的理由) で、"asia/hong_kong" ローカル変換での節約は 1904-10-30t00:36:42 から始まることがわかりました。 resolverstyle.strict ここでは問題ではありません。

これが、00:23:18 hkt 9 と表示される理由です。

コードを変更する場合、たとえば:

リーリー

期待される出力:

リーリー

以上がアジア/香港の場合、LocalDate.parse および ResolverStyle.STRICT が予期しない結果を返すの詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

ソース:stackoverflow.com
このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。
人気のチュートリアル
詳細>
最新のダウンロード
詳細>
ウェブエフェクト
公式サイト
サイト素材
フロントエンドテンプレート