Pengenalan Masalah:
Apabila cuba menghuraikan String dalam format "YYYY-MM-dd HH:mm" menggunakan SimpleDateFormat, pengguna mungkin menghadapi hasil tarikh dan masa yang salah. Secara khususnya, tarikh yang dihuraikan mungkin tidak sepadan dengan tarikh yang dijangkakan.
Soalan:
Mengapa SimpleDateFormat tersalah menghuraikan tarikh dalam "TTTT-MM-dd HH:mm" format? Bagaimanakah isu ini boleh diselesaikan?
Jawapan:
SimpleDateFormat menggunakan huruf corak sensitif huruf besar untuk menghuraikan rentetan input. Untuk format tahun, "YYYY" mewakili tahun penuh dengan sifar pendahuluan, manakala huruf kecil "yyyy" mewakili tahun tanpa sifar pendahuluan. Dalam kod yang disediakan, huruf corak "YYYY" telah digunakan secara salah, menyebabkan penghuraian tarikh yang tidak dijangka.
Penyelesaian:
Untuk menghuraikan tarikh dan masa dengan betul, gunakan huruf kecil "yyyy" dalam corak:
<code class="java">SimpleDateFormat df = new SimpleDateFormat("yyyy-MM-dd HH:mm", Locale.ENGLISH);</code>
Dengan pembetulan ini, kod akan menghuraikan tarikh dalam format yang dijangkakan tanpa sebarang isu.
Pertimbangan Tambahan:
Apabila menggunakan SimpleDateFormat, semak huruf corak dengan teliti untuk memastikan ia sepadan dengan format yang diingini. Rujuk dokumentasi API Java untuk senarai lengkap huruf corak dan format tarikh/masa yang sepadan.
Kemas Kini Pangkalan Data:
Mengenai isu di mana masa ditetapkan semula kepada 00:00 apabila mengemas kini tarikh dalam pangkalan data, pastikan jenis data lajur pangkalan data dan komponen masa objek tarikh Java adalah serasi. Jika lajur pangkalan data hanya menyimpan tarikh, komponen masa dalam objek Java akan diabaikan apabila dimasukkan.
Atas ialah kandungan terperinci Mengapa SimpleDateFormat Menghuraikan Tarikh Secara Salah dalam Format \'YYYY-MM-dd HH:mm\' dan Bagaimana Isu Ini Boleh Diselesaikan?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!