Jawaban:
Anda dapat melakukan:
timeStamp.toLocalDateTime().toLocalDate();
Perhatikan bahwa zona waktu
timestamp.toLocalDateTime()
akan digunakanClock.systemDefaultZone()
untuk melakukan konversi. Ini mungkin atau mungkin tidak yang Anda inginkan.
timestamp.toLocalDateTime()
metode ini akan menggunakan zona waktu systemDefault untuk melakukan konversi. Ini mungkin atau mungkin tidak yang Anda inginkan.
LocalDateTime
selalu menggunakan zona waktu default sistem. Itulah yang dimaksud dengan "Lokal" dalam namanya.
Jawaban yang diterima tidak ideal, jadi saya memutuskan untuk menambahkan 2 sen saya
timeStamp.toLocalDateTime().toLocalDate();
adalah solusi yang buruk secara umum , saya bahkan tidak yakin mengapa mereka menambahkan metode ini ke JDK karena membuat hal-hal sangat membingungkan dengan melakukan konversi implisit menggunakan zona waktu sistem. Biasanya ketika hanya menggunakan kelas tanggal java8 programmer dipaksa untuk menentukan zona waktu yang merupakan hal yang baik.
Solusi yang bagus adalah
timestamp.toInstant().atZone(zoneId).toLocalDate()
Di mana zoneId adalah zona waktu yang ingin Anda gunakan yang biasanya adalah ZoneId.systemDefault () jika Anda ingin menggunakan zona waktu sistem atau zona waktu hardcode seperti ZoneOffset.UTC
Pendekatan umum seharusnya
Saya akan sedikit memperluas jawaban @assylias untuk memperhitungkan zona waktu. Setidaknya ada dua cara untuk mendapatkan LocalDateTime untuk zona waktu tertentu.
Anda dapat menggunakan zona waktu setDefault untuk seluruh aplikasi. Ini harus dipanggil sebelum stempel waktu -> konversi java.time:
public static void main(String... args) {
TimeZone utcTimeZone = TimeZone.getTimeZone("UTC");
TimeZone.setDefault(utcTimeZone);
...
timestamp.toLocalDateTime().toLocalDate();
}
Atau Anda dapat menggunakan rantai toInstant.atZone:
timestamp.toInstant()
.atZone(ZoneId.of("UTC"))
.toLocalDate();