SimpleDateFormatter.parse Memberi Format Output Tidak Dijangka
Dalam kod anda, anda telah mengalami percanggahan di mana SimpleDateFormatter.format dan SimpleDateFormatter.parse menghasilkan format output yang berbeza. Mari kita selidiki sebab di sebalik tingkah laku ini.
Kelas SimpleDateFormatter memerlukan kedua-dua pemformatan tarikh dan maklumat zon masa untuk memanipulasi tarikh dengan betul. Dalam kes anda, format yang anda tentukan ialah "dd/MM/yyyy hh:mm:ss a" (cth., 23/05/2018 03:30:00 PM). Walau bagaimanapun, apabila anda menghuraikan tarikh yang diformatkan kembali menggunakan format yang sama, ia mengenali zon waktu IST (Indian Standard Time) disebabkan oleh "a" dalam format, yang mewakili penetapan AM/PM.
Ini bermakna SimpleDateFormatter.parse mentafsir tarikh dengan zon waktu IST di tempatnya, menghasilkan cap waktu yang anda perhatikan: "Rabu 23 Mei 15:30:00 IST 2018." Format ini berbeza daripada yang anda nyatakan pada asalnya kerana ia termasuk maklumat zon waktu.
Untuk menyelesaikan isu ini, pertimbangkan penyelesaian berikut:
Ringkasnya, percanggahan antara SimpleDateFormatter.format dan SimpleDateFormatter.parse timbul disebabkan pertimbangan zon waktu. Dengan memanfaatkan API java.time atau mengurus zon waktu secara eksplisit dalam SimpleDateFormatter, anda boleh mengelakkan ketidakkonsistenan pemformatan ini dan memastikan pengendalian tarikh yang konsisten.
Atas ialah kandungan terperinci Mengapa SimpleDateFormat.parse Menghasilkan Format Output yang Tidak Dijangka?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!