Monate mit PHP DateTime ändern: Das beabsichtigte Verhalten aufdecken
Beim Arbeiten mit der DateTime-Klasse von PHP führt das Addieren oder Subtrahieren von Monaten möglicherweise nicht immer zum Ergebnis erwartete Ergebnisse. In der Dokumentation wird darauf hingewiesen, dass Sie sich vor diesen Vorgängen „hüten“ sollten, da sie nicht so intuitiv sind, wie sie scheinen.
Erklärung des beabsichtigten Verhaltens
Betrachten Sie das Beispiel in die Dokumentation:
$date = new DateTime('2000-12-31'); $date->modify('+1 month'); // Move ahead by 1 month echo $date->format('Y-m-d') . "\n"; // Prints 2001-01-31 $date->modify('+1 month'); // Advance another month echo $date->format('Y-m-d') . "\n"; // Prints 2001-03-03
Statt wie erwartet den Monat zu erhöhen, ist das Ergebnis ein Sprung zum 3. März. Warum ist das so?
Das passiert intern:
Erhalten des erwarteten Verhaltens
Um das erwartete Verhalten zu erreichen, wobei „1 Monat“ Wenn Sie das Datum um einen ganzen Monat vorverlegen möchten, gibt es einige Optionen:
$d = new DateTime('2010-01-31'); $d->modify('first day of next month'); echo $d->format('F'), "\n"; // Correctly prints February
Fazit
Das Verständnis des beabsichtigten Verhaltens der monatsverändernden Operationen von DateTime ist entscheidend, um unerwartete Ergebnisse zu vermeiden. Durch die Verwendung der manuellen Berechnung oder der Funktion „Erster Tag des nächsten Monats“ können Sie die gewünschte Funktionalität zur Datumsmanipulation in Ihren PHP-Anwendungen erreichen.
Das obige ist der detaillierte Inhalt vonWarum führt DateTime::modify(' 1 Monat') von PHP zu unerwarteten Ergebnissen?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!