L'éditeur php Xiaoxin présentera les problèmes liés à LocalDate.parse et ResolverStyle.STRICT en Java dans cet article. Lorsque vous utilisez ces méthodes en Asie ou à Hong Kong, vous risquez d’obtenir des résultats inattendus. Nous explorerons ce problème et proposerons des solutions.
Mon entrée est le 19.12.0009, la valeur attendue est le 19 décembre 00:00:00 hkt 9, mais le résultat renvoyé est le 21 décembre 00:23:18 hkt 9, pourquoi ? Le code est le suivant :
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);
Dans zonerules il y a un concept de conversion avec savingslocaltransitions
。我发现由于某种原因(可能是历史原因), "asia/hong_kong"
本地转换中的节省从 1904-10-30t00:36:42
开始。 resolverstyle.strict
dedans ce qui n'est pas le problème ici !
C'est pour ça que tu vois 00:23:18 hkt 9
.
Si vous modifiez le code, par exemple :
localdate localdate = localdate.parse("19.12.1904", formatter);
Résultat attendu :
resultDate Mon Dec 19 01:00:00 JST 1904
Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!