SimpleDateFormat Salah Memaparkan Bulan
Apabila bekerja dengan tarikh, adalah penting untuk data ditukar dengan tepat. Walau bagaimanapun, apabila menggunakan SimpleDateFormat Java untuk menghuraikan tarikh yang diekstrak daripada Active Directory (AD), isu boleh timbul apabila semua tarikh tidak ditetapkan pada Januari.
Masalahnya
Dalam coretan kod yang disediakan, SimpleDateFormat dimulakan dengan rentetan corak berikut:
SimpleDateFormat sdf = new SimpleDateFormat("yyyy/MM/DD");
Rentetan corak ini menentukan format jangkaan rentetan tarikh: tahun (yyyy), bulan (MM) dan hari ( DD). Walau bagaimanapun, nilai parsedDate secara konsisten menunjukkan bulan sebagai Januari, tanpa mengira bulan sebenar yang disertakan dalam tarikh AD.
Penyelesaian
Isunya terletak pada penggunaan huruf besar "MM" dalam rentetan corak. Dalam SimpleDateFormat, huruf besar "MM" mewakili bulan sebagai nama penuh, manakala huruf kecil "MM" mewakili bulan sebagai nombor dua digit.
Untuk membetulkan isu ini, rentetan corak hendaklah diubah suai untuk menggunakan huruf kecil "MM":
SimpleDateFormat sdf = new SimpleDateFormat("yyyy/MM/dd");
Dengan menggunakan huruf kecil "MM", SimpleDateFormat akan menghuraikan bulan dengan betul sebagai nombor dua digit, menghapuskan isu Januari yang konsisten.
Atas ialah kandungan terperinci Mengapa SimpleDateFormat Menetapkan Semua Tarikh kepada Januari Apabila Menghuraikan Tarikh Direktori Aktif?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!