Rumah  >  Artikel  >  Java  >  Bagaimana Menghuraikan Tarikh dengan Betul dengan \'Z\' Literal dalam Java menggunakan SimpleDateFormat?

Bagaimana Menghuraikan Tarikh dengan Betul dengan \'Z\' Literal dalam Java menggunakan SimpleDateFormat?

Patricia Arquette
Patricia Arquetteasal
2024-11-04 02:26:021001semak imbas

How to Correctly Parse Dates with 'Z' Literal in Java using SimpleDateFormat?

SimpleDateFormat Parsing Date dengan 'Z' Literal

Apabila cuba menghuraikan tarikh dalam format ISO 8601 menggunakan SimpleDateFormat, ia mungkin gagal dengan betul mengendalikan literal 'Z', yang menandakan UTC sebagai titik rujukan pilihan. Sebagai contoh, menghuraikan rentetan "2010-04-05T17:16:00Z" menggunakan corak "yyyy-MM-dd'T'HH:mm:ss" akan menghasilkan waktu tempatan yang salah.

The corak tradisional "yyyy-MM-dd'T'HH:mm:ssz" dan "yyyy-MM-dd'T'HH:mm:ssZ" juga tidak mencukupi untuk menghuraikan tarikh dengan literal 'Z'. Tingkah laku ini mungkin kelihatan berlawanan dengan intuitif kerana literal 'Z' secara jelas menunjukkan UTC.

Penyelesaian

Sebelum Java 7, menghuraikan tarikh dengan literal 'Z' memerlukan tetapan secara eksplisit TimeZone pada objek SimpleDateFormat. Walau bagaimanapun, dalam Java 7 dan ke atas, corak "yyyy-MM-dd'T'HH:mm:ssX" boleh digunakan untuk menghuraikan dan menggunakan akhiran zon waktu UTC dengan betul.

Contohnya:

<code class="java">SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd'T'HH:mm:ssX");
Date date = sdf.parse("2010-04-05T17:16:00Z");</code>

Ini akan menghuraikan tarikh dengan betul sebagai masa UTC.

Alternatif

Alternatif lain ialah menggunakan pakej java.time yang diperkenalkan dalam Java 8 , yang menyediakan API tarikh dan masa yang lebih moden dan komprehensif. Kod berikut menunjukkan penggunaan java.time untuk menghuraikan tarikh:

<code class="java">import java.time.Instant;
import java.time.ZonedDateTime;

String dateString = "2010-04-05T17:16:00Z";
Instant instant = Instant.parse(dateString);
ZonedDateTime zonedDateTime = instant.atZone(ZoneId.of("Z"));</code>

Pendekatan ini menghapuskan keperluan untuk corak kompleks atau tetapan zon waktu yang jelas, kerana java.time mengendalikan zon waktu UTC secara asli.

Atas ialah kandungan terperinci Bagaimana Menghuraikan Tarikh dengan Betul dengan \'Z\' Literal dalam Java menggunakan SimpleDateFormat?. 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