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
Lepaskan: 2024-12-18 08:41:11
asal
148 orang telah melayarinya

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";
Salin selepas log masuk

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;
Salin selepas log masuk

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());
Salin selepas log masuk

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!

sumber:php.cn
Kenyataan Laman Web ini
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
Artikel terbaru oleh pengarang
Tutorial Popular
Lagi>
Muat turun terkini
Lagi>
kesan web
Kod sumber laman web
Bahan laman web
Templat hujung hadapan