php-Editor Xiaoxin wird in diesem Artikel die Probleme mit LocalDate.parse und ResolverStyle.STRICT in Java vorstellen. Wenn Sie diese Methoden in Asien oder Hongkong anwenden, kann es zu unerwarteten Ergebnissen kommen. Wir werden dieses Problem untersuchen und Lösungen anbieten.
Meine Eingabe ist 19.12.0009, der erwartete Wert ist 19. Dezember 00:00:00 Uhr 9, aber das zurückgegebene Ergebnis ist 21. Dezember 00:23:18 Uhr 9, warum? Der Code lautet wie folgt:
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);
In Zonenregeln gibt es ein Konvertierungskonzept, bei dem savingslocaltransitions
。我发现由于某种原因(可能是历史原因), "asia/hong_kong"
本地转换中的节省从 1904-10-30t00:36:42
开始。 resolverstyle.strict
hier nicht das Problem ist!
Deshalb sehen Sie 00:23:18 hkt 9
.
Wenn Sie den Code ändern, zum Beispiel:
localdate localdate = localdate.parse("19.12.1904", formatter);
Erwartete Ausgabe:
resultDate Mon Dec 19 01:00:00 JST 1904
Das obige ist der detaillierte Inhalt vonLocalDate.parse und ResolverStyle.STRICT für Asien/Hongkong geben unerwartete Ergebnisse zurück. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!