Heim >Backend-Entwicklung >PHP-Tutorial >Warum wird das Hinzufügen eines Tages zu einem Datum nicht auf den nächsten Monat übertragen?

Warum wird das Hinzufügen eines Tages zu einem Datum nicht auf den nächsten Monat übertragen?

Linda Hamilton
Linda HamiltonOriginal
2024-11-29 11:35:13354Durchsuche

Why Does Adding a Day to a Date Not Roll Over to the Next Month?

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!

Stellungnahme:
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn