Rumah > Artikel > pembangunan bahagian belakang > Mengapa Menambah Satu Hari pada Tarikh Kadang-kadang Gagal Berbalik ke Bulan Seterusnya?
Menambah Satu Hari ke Tarikh: Menyelesaikan Isu Pertukaran Tarikh
Menambah satu hari pada tarikh sepatutnya secara intuitif menghasilkan tarikh satu hari kemudian . Walau bagaimanapun, dalam sesetengah senario, penambahan tarikh mungkin menghasilkan hasil yang tidak dijangka, khususnya apabila peralihan bulan terlibat.
Masalah:
Pertimbangkan kod berikut yang menambah tarikh dengan satu hari:
$stop_date = date('Y-m-d H:i:s', strtotime('2009-09-30 20:24:00')); echo 'date before day adding: '.$stop_date; $stop_date = date('Y-m-d H:i:s', strtotime('+1 day', $stop_date)); echo ' date after adding one day. SHOULD be rolled over to the next month: '.$stop_date;
Apabila dilaksanakan, kod ini menghasilkan keputusan berikut, yang salah menunjukkan tarikh sebelum hari ditambah:
date before day adding: 2009-09-30 20:24:00 date after adding one day. SHOULD be rolled over to the next month: 2009-09-30 20:24:00
Penyelesaian:
Untuk menyelesaikan isu ini, dua pendekatan boleh digunakan:
Pendekatan 1: Menggunakan Rentetan Format yang Betul untuk strtotime
Fungsi strtotime PHP memerlukan rentetan format khusus untuk menghuraikan dan mengubah suai tarikh dengan betul. Dalam kod yang disediakan, rentetan format yang digunakan ('Y-m-d H:i:s') hanya membenarkan manipulasi jam dan minit. Untuk mendayakan peralihan bulan, rentetan format mesti termasuk penentu 'Y-m-d':
$stop_date = date('Y-m-d H:i:s', strtotime('2009-09-30 20:24:00 ' . '+1 day'));
Pendekatan 2: Menggunakan Kelas DateTime
Kelas DateTime yang diperkenalkan dalam PHP 5.2.0 menyediakan mekanisme yang lebih baik untuk manipulasi tarikh. Menggunakan objek DateTime, anda boleh menambah tarikh sehari secara terus:
$stop_date = new DateTime('2009-09-30 20:24:00'); echo 'date before day adding: ' . $stop_date->format('Y-m-d H:i:s'); $stop_date->modify('+1 day'); echo 'date after adding 1 day: ' . $stop_date->format('Y-m-d H:i:s');
Atas ialah kandungan terperinci Mengapa Menambah Satu Hari pada Tarikh Kadang-kadang Gagal Berbalik ke Bulan Seterusnya?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!