Datum liegt taggenau 3 Monate zurück

wie bekommt man das hin?

if($datum

Nein. Die Funktion date gibt einen String zurück, und den kann man nicht so vergleichen (zumindest kommt nicht das raus was Du möchtest).
Du musst die Differenz aus den Zeitstempeln berechnen:

$date1 = strtotime("2005-2-3"); //Testdatum
$date2 = strtotime("-3 month"); //Datum vor 3 Monaten
($date1 \> $date2) ? print("Datum innerhalb der letzten 3 Monate") : print("Datum ist älter als 3 Monate."); 

Gruß,
Rudy

[Bei dieser Antwort wurde das Vollzitat nachträglich automatisiert entfernt]
[Bei dieser Antwort wurde das Vollzitat nachträglich automatisiert entfernt]

Hi,

mal was anderes: Was ist denn bitte „taggenau 3 Monate zurück“? Welches Ergebnis erwartest Du am 20.5. und welches am 30.5.?

Cheatah

mal was anderes: Was ist denn bitte „taggenau 3 Monate
zurück“? Welches Ergebnis erwartest Du am 20.5. und welches am
30.5.?

Cheatah

Die Frage von Cheatah ist berechtigt - das „taggenau“ im Titel hatte ich ganz überlesen, da es danach nur mehr um Datumsvergleiche ging.

strtotime("-x month") rechnet das Datum monateweise zurück: wenn heute der 3. ist, dann liefert strtoime("-1 month") den 3. des letzten Monats zurück, strtotime("-2 month") den 3. des vorletzten Monats usw. - ungeachtet, wie viele Tage der Monat insgesamt hat. Wenn Du also, wie es betriebswirtschaftlich geläufig ist, den Durchschnittsmonat (1/12 eines Jahres, ~ 30 Tage) verwenden möchtest, dann ist Dir wohl besser mit der Ermittlung der Tagesdifferenz zwischen den 2 Daten gedient und der Ermittlung des Stichtags durch Rückrechnung in Tagen statt in Monaten.

$date1 = strtotime("2005-2-3");
$date2 = strtotime("-90 days");
$daydiff = floor($date1/60/60/24) - floor($date2/60/60/24);
print("Zwischen dem ".date("d.m.Y", $date1)." und dem ".date("d.m.Y", $date2)." liegen $daydiff Tage.");

Ich hoffe damit ist Dir geholfen - ansonsten wäre es nützlich, wenn Du uns mitteilen würdest, wozu Du dies eigentlich verwenden möchtest.

Gruß,
Rudy

1 Like

ja, so meitne ich das, die Funktion rechnet ja einfach nur Monate ab, mit den 90 Tagen ist besser.

Danke