Menambah Hari ke Tarikh: Menyelesaikan Isu Pergeseran
Dalam PHP, menambah hari pada tarikh ialah operasi biasa. Walau bagaimanapun, isu timbul apabila menambah tarikh hampir penghujung bulan, kerana hasilnya mungkin tidak menggambarkan penggulingan yang dijangkakan.
Kod dan Isu Asal
Yang disediakan kod cuba menambah satu hari pada tarikh "2009-09-30 20:24:00". Malangnya, hasilnya mengembalikan tarikh "1970-01-01 17:33:29" dan bukannya "2009-10-01 20:24:00".
Penyelesaian
Isunya terletak pada cara PHP mengendalikan perwakilan rentetan tarikh. Daripada menggunakan strtotime untuk menghuraikan rentetan, pendekatan yang betul ialah menggunakan fungsi date_create_from_format untuk menjana objek DateTime.
Kod yang Diperbaiki
<?php $stop_date = '2009-09-30 20:24:00'; $stop_date = date_create_from_format('Y-m-d H:i:s', $stop_date); 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'); ?>
Untuk PHP 5.2.0
Untuk versi PHP 5.2.0 dan kemudian, sintaks alternatif berikut boleh digunakan:
<?php $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'); ?>
Sintaks ini memulakan objek DateTime secara langsung, menawarkan pendekatan yang lebih berorientasikan objek.
Atas ialah kandungan terperinci Bagaimana untuk Menambahkan Hari ke Tarikh dengan Betul dalam PHP dan Mengelakkan Isu Rollover?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!