Rumah  >  Artikel  >  pangkalan data  >  Mengapa SimpleDateFormat.parse Menghasilkan Format Output yang Tidak Dijangka?

Mengapa SimpleDateFormat.parse Menghasilkan Format Output yang Tidak Dijangka?

Barbara Streisand
Barbara Streisandasal
2024-11-01 03:12:02235semak imbas

Why Does SimpleDateFormat.parse Yield an Unexpected Output Format?

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:

  • Gunakan java.time's LocalDateTime: Seperti yang dicadangkan dalam jawapan yang diterima, menggunakan LocalDateTime API java.time menyediakan pendekatan yang lebih bersih dan moden. Objek ini merangkum maklumat tarikh dan masa tanpa bias zon masa. Anda boleh menukar cap waktu zaman kepada LocalDateTime dan memasukkannya terus ke dalam pangkalan data MySQL anda tanpa menghadapi masalah penghuraian.
  • Tetapkan Zon Masa Secara Eksplisit: Sebagai alternatif, jika anda ingin menggunakan SimpleDateFormatter, pastikan bahawa anda secara eksplisit menetapkan zon waktu sebelum menggunakan parse. Dengan menentukan zon waktu di muka, anda boleh mengawal tafsiran nilai tarikh dan masa.

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!

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