Heim >Backend-Entwicklung >PHP-Tutorial >Warum wird das Hinzufügen eines Tages zu einem Datum nicht auf den nächsten Monat übertragen?
Korrigieren der Datumszugabe mit Monats-Rollover
Ihr Code beabsichtigt, einem Datum einen Tag hinzuzufügen, scheint aber ein Datum zurückzugeben, das davor liegt der Zusatz. Lassen Sie uns das Problem genauer untersuchen und eine Lösung bereitstellen, die die Addition über mehrere Monate hinweg korrekt fortsetzt.
Der problematische Code:
$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;
Der Fehler liegt in der Zeile, in der Sie die Addition durchführen:
$stop_date = date('Y-m-d H:i:s', strtotime('+1 day', $stop_date));
Diese Zeile verwendet die Funktion strtotime(), um das Datum zu manipulieren. Wenn Sie jedoch einen Zeitversatz wie „1 Tag“ angeben, werden Monate nicht korrekt übertragen.
Lösung
Um einen Tag korrekt hinzuzufügen und Monate korrekt zu übertragen Bei Bedarf können Sie einen der folgenden Ansätze verwenden:
PHP 5.3 :
$stop_date = '2009-09-30 20:24:00'; echo 'date before day adding: ' . $stop_date; $stop_date = date('Y-m-d H:i:s', strtotime($stop_date . ' +1 day')); echo 'date after adding 1 day: ' . $stop_date;
PHP 5.2 :
$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');
Diese Lösungen addieren korrekt einen Tag zum angegebenen Datum und übertragen die Monate nach Bedarf.
Das obige ist der detaillierte Inhalt vonWarum wird das Hinzufügen eines Tages zu einem Datum nicht auf den nächsten Monat übertragen?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!