Rumah >Java >javaTutorial >Mengapa Menghurai Rentetan Tarikh dalam Java Membuang 'Watak corak haram 'T''?

Mengapa Menghurai Rentetan Tarikh dalam Java Membuang 'Watak corak haram 'T''?

Patricia Arquette
Patricia Arquetteasal
2024-12-18 08:41:11156semak imbas

Why Does Parsing a Date String in Java Throw

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!

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