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);
zonerules には遷移の概念があり、 Savinglocaltransitions
があります。何らかの理由 (おそらく歴史的理由) で、"asia/hong_kong"
ローカル変換での節約は 1904-10-30t00:36:42
から始まることがわかりました。 resolverstyle.strict
ここでは問題ではありません。
これが、00:23:18 hkt 9
と表示される理由です。
コードを変更する場合、たとえば:
リーリー期待される出力:
リーリー以上がアジア/香港の場合、LocalDate.parse および ResolverStyle.STRICT が予期しない結果を返すの詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。