Rumah  >  Artikel  >  Java  >  Mengapa SimpleDateFormat Tersalah Menghuraikan \"YYYY-MM-dd HH:mm\"?

Mengapa SimpleDateFormat Tersalah Menghuraikan \"YYYY-MM-dd HH:mm\"?

Mary-Kate Olsen
Mary-Kate Olsenasal
2024-11-03 04:54:30658semak imbas

Why Does SimpleDateFormat Incorrectly Parse

SimpleDateFormat Menghuraikan "YYYY-MM-dd HH:mm" Dengan Salah

Apabila cuba menghuraikan rentetan dalam format "YYYY-MM -dd HH:mm" ke Tarikh, sesetengah pembangun menghadapi keputusan tarikh yang tidak dijangka. Ini berlaku apabila menggunakan kelas SimpleDateFormat dengan tetapan lembut ditetapkan kepada palsu.

Coretan kod berikut menunjukkan isu:

<code class="java">Date newDate = null;
String dateTime = "2013-03-18 08:30";
SimpleDateFormat df = new SimpleDateFormat("YYYY-MM-dd HH:mm", Locale.ENGLISH);
df.setLenient(false);
try {
    newDate = df.parse(dateTime);
} catch (ParseException e) {
    throw new InvalidInputException("Invalid date input.");
}</code>

Kod ini menghasilkan tarikh yang salah:

Sun Dec 30 08:30:00 EST 2012 (wrong)

Untuk menyelesaikan isu ini, sahkan bahawa format tahun yang dinyatakan dalam corak SimpleDateFormat ialah huruf kecil "yyyy" dan bukannya huruf besar "YYYY."

<code class="java">SimpleDateFormat df = new SimpleDateFormat("yyyy-MM-dd HH:mm", Locale.ENGLISH);</code>

Dengan membuat pelarasan ini, kod akan menghuraikan "YYYY-MM-dd HH:mm" rentetan dengan betul. Rujuk dokumentasi SimpleDateFormat untuk maklumat lanjut.

Atas ialah kandungan terperinci Mengapa SimpleDateFormat Tersalah Menghuraikan \"YYYY-MM-dd HH:mm\"?. 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