Rumah > Java > LocalDate.parse dan ResolverStyle.STRICT, untuk Asia/Hong Kong, mengembalikan hasil yang tidak dijangka

LocalDate.parse dan ResolverStyle.STRICT, untuk Asia/Hong Kong, mengembalikan hasil yang tidak dijangka

王林
Lepaskan: 2024-02-13 20:54:07
ke hadapan
1226 orang telah melayarinya

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.

Kandungan soalan

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);
Salin selepas log masuk

Penyelesaian

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);
Salin selepas log masuk

Output yang dijangkakan:

resultDate Mon Dec 19 01:00:00 JST 1904
Salin selepas log masuk

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!

sumber:stackoverflow.com
Kenyataan Laman Web ini
Kandungan artikel ini disumbangkan secara sukarela oleh netizen, dan hak cipta adalah milik pengarang asal. Laman web ini tidak memikul tanggungjawab undang-undang yang sepadan. Jika anda menemui sebarang kandungan yang disyaki plagiarisme atau pelanggaran, sila hubungi admin@php.cn
Tutorial Popular
Lagi>
Muat turun terkini
Lagi>
kesan web
Kod sumber laman web
Bahan laman web
Templat hujung hadapan