Rumah  >  Artikel  >  Java  >  Mengapa SimpleDateFormat Menjana Tarikh yang Salah untuk Rentetan \"YYYY-MM-dd HH:mm\"?

Mengapa SimpleDateFormat Menjana Tarikh yang Salah untuk Rentetan \"YYYY-MM-dd HH:mm\"?

Patricia Arquette
Patricia Arquetteasal
2024-11-02 20:43:02388semak imbas

Why Does SimpleDateFormat Generate an Incorrect Date for a

SimpleDateFormat Menjana Masa Tarikh Yang Salah untuk YYYY-MM-dd HH:mm Rentetan

Isu:

Menghuraikan rentetan dalam format "YYYY-MM-dd HH:mm" menggunakan SimpleDateFormat menghasilkan tarikh yang tidak dijangka.

Contoh:

<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>

Keputusan Sebenar:

Ahad Dis 30 08:30:00 EST 2012

Keputusan Jangkaan:

2013-03 08:30:00

Penyelesaian:

Isunya terletak pada rentetan corak SimpleDateFormat. Penentu format untuk tahun hendaklah "yyyy" dan bukannya "YYYY".

Kod Dibetulkan:

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

Pengubahsuaian ini memastikan tahun itu dihuraikan sebagai tahun empat digit, sejajar dengan format yang dijangkakan "YYYY-MM-dd HH:mm".

Atas ialah kandungan terperinci Mengapa SimpleDateFormat Menjana Tarikh yang Salah untuk Rentetan \"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