Rumah >Java >javaTutorial >Mengapa Menghurai Rentetan Tarikh dalam Java Membuang 'Watak corak haram 'T''?
Watak Corak Haram 'T' Apabila Menghuraikan Rentetan Tarikh ke java.util.Date
Menghuraikan rentetan tarikh kepada java.util. Objek tarikh memerlukan corak yang mematuhi peraturan tertentu. Satu corak biasa ialah "yyyy-MM-ddThh:mm:ssZ," yang mewakili tarikh dalam format ISO 8601.
Masalah:
Apabila menggunakan corak yang ditentukan, pengecualian ialah dilemparkan dengan mesej "java.lang.IllegalArgumentException: Watak corak tidak sah 'T'."
Sebab:
'T' dalam corak mewakili pemisah antara komponen tarikh dan masa. Walau bagaimanapun, dalam SimpleDateFormat Java, aksara 'T' perlu dilepaskan dengan petikan tunggal pada kedua-dua belah pihak untuk dikenali dengan betul.
Penyelesaian 1: Escape 'T' dalam Corak
Untuk menyelesaikan isu menggunakan corak asal, elakkan aksara 'T' sebagai berikut:
String pattern = "yyyy-MM-dd'T'hh:mm:ssZ";
Penyelesaian 2: Gunakan ISO_8601_24H_FULL_FORMAT
Sebagai alternatif, anda boleh menggunakan pemalar ISO_8601_24H_FULL_FORMAT yang telah ditetapkan yang disediakan oleh Q359708 kelas:
String pattern = Q2597083.ISO_8601_24H_FULL_FORMAT;
Untuk Java 8 dan Lebih Tinggi:
Untuk Java 8 dan ke atas, adalah disyorkan untuk menggunakan kelas DateTimeFormatter dan bukannya SimpleDateFormat dan Instant dan bukannya Date. Berikut ialah contoh:
import java.time.Instant; import java.time.format.DateTimeFormatter; String dateString = "2010-10-02T12:23:23Z"; DateTimeFormatter formatter = DateTimeFormatter.ISO_DATE_TIME; Instant d = Instant.parse(dateString); System.out.println(d.getYear());
Dengan menggunakan penyelesaian ini, anda boleh menghuraikan rentetan tarikh dalam format ISO 8601 dengan jayanya tanpa menemui pengecualian "Katak corak haram 'T'".
Atas ialah kandungan terperinci Mengapa Menghurai Rentetan Tarikh dalam Java Membuang 'Watak corak haram 'T''?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!