Rumah >Java >javaTutorial >Bagaimanakah cara saya menukar java.util.Date kepada Instant, OffsetDateTime atau ZonedDateTime java.time?

Bagaimanakah cara saya menukar java.util.Date kepada Instant, OffsetDateTime atau ZonedDateTime java.time?

Mary-Kate Olsen
Mary-Kate Olsenasal
2024-11-03 11:24:29719semak imbas

How do I convert java.util.Date to java.time's Instant, OffsetDateTime, or ZonedDateTime?

Tukar java.util.Date kepada Instant, OffsetDateTime atau ZonedDateTime java.time

Sambil kita berhijrah ke arah rangka kerja java.time moden , adalah penting untuk mengetahui cara menukar objek java.util.Date warisan kepada jenis java.time yang sesuai. Berikut ialah senarai kesetaraan:

java.util.Date to Instant

Kedua-duanya mewakili detik dalam UTC, jadi penukaran adalah mudah:

<code class="java">Instant instant = myUtilDate.toInstant();

java.util.Date myUtilDate = java.util.Date.from(instant);</code>

java.util.Date ke OffsetDateTime atau ZonedDateTime java.time

Memandangkan jenis ini menggabungkan maklumat zon waktu, mengekstrak zon daripada Tarikh warisan adalah perlu:

<code class="java">// If the legacy date is a GregorianCalendar (which can hold time zone info)
if (myUtilCalendar instanceof GregorianCalendar) {
    GregorianCalendar gregCal = (GregorianCalendar) myUtilCalendar;
    ZonedDateTime zdt = gregCal.toZonedDateTime(); // ZonedDateTime with time zone

    java.util.Calendar myUtilCalendar = java.util.GregorianCalendar.from(zdt);
}</code>

Pemetaan Penukaran Tambahan

Legacy Type java.time Equivalent Additional Notes
java.util.Calendar Instant Converts to the start of the day in UTC
java.util.GregorianCalendar ZonedDateTime Retains time zone information
java.util.LocalDate ZonedDateTime Requires a time zone to determine the date
java.util.LocalTime Instant Converts to the start of the day in UTC
java.util.LocalDateTime ZonedDateTime Requires a time zone to determine the date and time

Pertimbangan Penting

  • Menukar daripada java.util.Date ke a jenis java.time boleh mengakibatkan kehilangan ketepatan kerana peleraian nanosaat tidak disokong oleh kelas warisan.
  • Apabila menukar kepada OffsetDateTime atau ZonedDateTime, maklumat zon waktu mesti disimpan untuk memastikan tafsiran yang betul.
  • Adalah sangat disyorkan untuk menggunakan jenis java.time dalam kod baharu untuk ketepatan dan ketekalan yang dipertingkatkan.

Atas ialah kandungan terperinci Bagaimanakah cara saya menukar java.util.Date kepada Instant, OffsetDateTime atau ZonedDateTime java.time?. 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