Rumah >Java >javaTutorial >Bagaimana untuk Menukar Antara java.time.LocalDateTime dan java.util.Date?

Bagaimana untuk Menukar Antara java.time.LocalDateTime dan java.util.Date?

Linda Hamilton
Linda Hamiltonasal
2024-11-13 02:53:02261semak imbas

How to Convert Between java.time.LocalDateTime and java.util.Date?

Menukar Antara java.time.LocalDateTime dan java.util.Date

Dengan pengenalan pakej java.time Java 8, pembangun telah menerima API baharunya untuk pengendalian tarikh dan masa. Antara kelasnya, LocalDateTime memegang nilai tarikh-dengan-masa bebas zon waktu.

Walau bagaimanapun, kod warisan sering bergantung pada kelas java.util.Date. Apabila menyepadukan pangkalan kod lama dan baharu, penukaran antara dua kelas ini menjadi perlu.

Pendekatan Penukaran:

Dari java.util.Date ke LocalDateTime:

  1. Tukar java.util.Date kepada penggunaan Segera kaedah toInstant().
  2. Tentukan zon waktu menggunakan ZoneId.systemDefault() untuk mencipta LocalDateTime melalui ofInstant().

Kod:

Date in = new Date();
LocalDateTime ldt = LocalDateTime.ofInstant(in.toInstant(), ZoneId.systemDefault());

Dari LocalDateTime hingga java.util.Date:

  1. Gunakan atZone(ZoneId) untuk menukar LocalDateTime kepada ZonedDateTime.
  2. Tukar ZonedDateTime kepada Instant menggunakan toInstant(), kemudian kepada java.util.Tarikh menggunakan Date.from().

Kod:

LocalDateTime ldt = ...
ZonedDateTime zdt = ldt.atZone(ZoneId.systemDefault());
Date output = Date.from(zdt.toInstant());

Nota tentang Waktu Penjimatan Siang (DST):

Menukar daripada LocalDateTime kepada java.util.Date melalui ZonedDateTime boleh memperkenalkan tingkah laku yang tidak dijangka disebabkan oleh DST. Nilai LocalDateTime tertentu mungkin tidak wujud atau mungkin berlaku dua kali semasa peralihan DST. Rujuk Javadoc untuk atZone(ZoneId) untuk mendapatkan butiran.

Pertimbangan Tambahan:

  • java.util.Date mewakili sesaat pada garis masa, manakala Semerta dalam java.time.* mewakili sesaat tanpa zon waktu.
  • Menukar antara LocalDateTime dan java.util.Date mungkin menghasilkan detik yang berbeza disebabkan percanggahan dalam sistem kalendar (Julian lwn. Gregorian) sebelum 1582.

Atas ialah kandungan terperinci Bagaimana untuk Menukar Antara java.time.LocalDateTime dan java.util.Date?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

Kenyataan:
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