Saya bekerja dengan API DateTime Java 8 yang baru.
Bagaimana cara mengonversi LocalDate menjadi Instan? Saya mendapatkan pengecualian dengan
LocalDate date = LocalDate.of(2012, 2, 2);
Instant instant = Instant.from(date);
dan saya tidak mengerti mengapa.
LocalDate
tidak menyertakan waktu.Jawaban:
The
Instant
kelas merupakan titik sesaat pada waktu-line. Konversi ke dan dariLocalDate
membutuhkan zona waktu. Tidak seperti beberapa pustaka tanggal dan waktu lainnya, JSR-310 tidak akan memilih zona waktu untuk Anda secara otomatis, jadi Anda harus menyediakannya.Contoh ini menggunakan zona waktu default JVM -
ZoneId.systemDefault()
- untuk melakukan konversi. Lihat di sini untuk jawaban yang lebih panjang untuk pertanyaan terkait.Pembaruan: Penggunaan jawaban yang diterima
LocalDateTime::toInstant(ZoneOffset)
yang hanya menerimaZoneOffset
. Jawaban ini menggunakanLocalDate::atStartOfDay(ZoneId)
yang menerima apapunZoneId
. Dengan demikian, jawaban ini umumnya lebih berguna (dan mungkin harus diterima).PS. Saya adalah penulis utama API
sumber
Untuk mengubahnya menjadi instan, Anda harus memiliki instance LocalDateTime, misalnya:
sumber