Hinzufügen eines Tages zu einem Datum: Beheben von Problemen mit der Datumsübernahme
Das Hinzufügen eines Tages zu einem Datum sollte intuitiv zu einem Datum führen, das einen Tag später liegt . In manchen Szenarien kann das Hinzufügen von Datumsangaben jedoch zu unerwarteten Ergebnissen führen, insbesondere wenn es sich um Monatsüberschneidungen handelt.
Problem:
Betrachten Sie den folgenden Code, der ein Datum um eins erhöht Tag:
$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;
Bei der Ausführung erzeugt dieser Code das folgende Ergebnis, das fälschlicherweise das Datum vor dem Tag angibt hinzugefügt:
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
Lösungen:
Um dieses Problem zu lösen, können zwei Ansätze verwendet werden:
Ansatz 1: Verwenden von Richtige Formatzeichenfolge für strtotime
Die PHP-Strtotime-Funktion erfordert eine bestimmte Formatzeichenfolge, um korrekt zu analysieren und zu ändern Termine. Im bereitgestellten Code ermöglicht die verwendete Formatzeichenfolge („Y-m-d H:i:s“) nur die Manipulation von Stunden und Minuten. Um Monatsüberschläge zu ermöglichen, muss die Formatzeichenfolge den Spezifizierer „Y-m-d“ enthalten:
$stop_date = date('Y-m-d H:i:s', strtotime('2009-09-30 20:24:00 ' . '+1 day'));
Ansatz 2: Verwendung der DateTime-Klasse
Die in PHP eingeführte DateTime-Klasse 5.2.0 bietet einen verbesserten Mechanismus zur Datumsmanipulation. Mit dem DateTime-Objekt können Sie Datumsangaben direkt um einen Tag erhöhen:
$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');
Das obige ist der detaillierte Inhalt vonWarum kann das Hinzufügen eines Tages zu einem Datum manchmal nicht auf den nächsten Monat übertragen werden?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!