editor php Xiaoxin akan memperkenalkan isu tentang LocalDate.parse dan ResolverStyle.STRICT dalam Java dalam artikel ini. Apabila menggunakan kaedah ini di Asia atau Hong Kong, anda mungkin mendapat hasil yang tidak dijangka. Kami akan meneroka isu ini dan memberikan penyelesaian.
Input saya ialah 19.12.0009, nilai jangkaan ialah 19 dec 00:00:00 hkt 9, tetapi keputusan yang dikembalikan ialah 21 Disember 00:23:18 hkt 9, kenapa? Kodnya adalah seperti berikut:
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);
Dalam zonerules terdapat konsep penukaran dengan savingslocaltransitions
。我发现由于某种原因(可能是历史原因), "asia/hong_kong"
本地转换中的节省从 1904-10-30t00:36:42
开始。 resolverstyle.strict
di dalamnya yang bukan masalah di sini!
Sebab itu anda nampak 00:23:18 hkt 9
.
Jika anda menukar kod, contohnya:
localdate localdate = localdate.parse("19.12.1904", formatter);
Output yang dijangkakan:
resultDate Mon Dec 19 01:00:00 JST 1904
Atas ialah kandungan terperinci LocalDate.parse dan ResolverStyle.STRICT, untuk Asia/Hong Kong, mengembalikan hasil yang tidak dijangka. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!