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

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

Linda Hamilton
Freigeben: 2024-11-22 00:45:12
Original
425 Leute haben es durchsucht

Why Does Adding One Day to a Date Sometimes Fail to Roll Over to the Next Month?

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;
Nach dem Login kopieren

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
Nach dem Login kopieren

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'));
Nach dem Login kopieren

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');
Nach dem Login kopieren

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!

Quelle:php.cn
Erklärung dieser Website
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
Neueste Artikel des Autors
Beliebte Tutorials
Mehr>
Neueste Downloads
Mehr>
Web-Effekte
Quellcode der Website
Website-Materialien
Frontend-Vorlage