Fehler in der Datumsberechnung?

deostift

Erfahrenes Mitglied
Hallo zusammen,

ich wollte mir Vergangenheitswerte abhängig von heute berechnen lassen und habe hierzu das Beispiel 368 von php.net verwendet:

PHP:
<?php
$morgen        = mktime(0, 0, 0, date("m")  , date("d")+1, date("Y"));
$letztermonat  = mktime(0, 0, 0, date("m")-1, date("d"),   date("Y"));
$naechstesjahr = mktime(0, 0, 0, date("m"),   date("d"),   date("Y")+1);
?>

Hier nun meine Version:

PHP:
<?php

// Aktuelles Datum ist der 29.03.2007
$morgen        = mktime(0, 0, 0, date("m")  , date("d")+1, date("Y"));
$letztermonat  = mktime(0, 0, 0, date("m")-1, date("d"),   date("Y"));
$vorletztermonat  = mktime(0, 0, 0, date("m")-2, date("d"),   date("Y"));
$naechstesjahr = mktime(0, 0, 0, date("m"),   date("d"),   date("Y")+1);

print "morgen: ".date("F j, Y, g:i a", $morgen);
print "letztermonat: ".date("F j, Y, g:i a", $letztermonat);
print "vorletztermonat: ".date("F j, Y, g:i a", $vorletztermonat);
print "naechstesjahr: ".date("F j, Y, g:i a", $naechstesjahr);

//Ausgabe - FALSCH BEI LETZTEM MONAT
// morgen: March 30, 2007, 12:00 am
// letztermonat: March 1, 2007, 12:00 am
// vorletztermonat: January 29, 2007, 12:00 am
// naechstesjahr: March 29, 2008, 12:00 am
?>

PHP scheint wohl mit dem Februar bei einem Monat zurück nicht klar zu kommen. Erwartet hätte ich beim 29. März - einem Monat = 28. Februar und nicht 01. März ...
 
Zuletzt bearbeitet:
Hmm ... meinst Du das hier?
PHP:
strtotime('previous month');
strtotime("-1 month");

Liefert beides mal 02.03.2007 zurück (heutiges Datum 30.03.2007).

PHP scheint hier wohl ebenso wenig klar zu kommen wie mit dem Beispiel weiter oben. Previous Month würde auf den 30. Februar fallen und da es leider nur den 28. Feb. gibt klopft php die beiden Tage drauf und produziert 02. März :mad:
 
Zurück