Heim  >  Artikel  >  LocalDate.parse und ResolverStyle.STRICT für Asien/Hongkong geben unerwartete Ergebnisse zurück

LocalDate.parse und ResolverStyle.STRICT für Asien/Hongkong geben unerwartete Ergebnisse zurück

王林
王林nach vorne
2024-02-13 20:54:071198Durchsuche

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.

Frageninhalt

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);

Lösung

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!

Stellungnahme:
Dieser Artikel ist reproduziert unter:stackoverflow.com. Bei Verstößen wenden Sie sich bitte an admin@php.cn löschen