• Jetzt anmelden. Es dauert nur 2 Minuten und ist kostenlos!

date_diff - fehler in php???

trodape

Neues Mitglied
kann es sein, dass date_diff() nur für aufeinanderfolgende Jahre / Monate /... funktioniert??? das erste beispiel liefert richtig +7, das zweite beispiel liefert ebenfalls +7, obwohl ich zusätzlich das Jahr erhöht hab.


$datetime1 = date_create('2009-10-11');
$datetime2 = date_create('2010-05-13');
$interval = date_diff($datetime1, $datetime2);
echo $interval->format('%R%m');


$datetime1 = date_create('2009-10-11');
$datetime2 = date_create('2012-05-13');
$interval = date_diff($datetime1, $datetime2);
echo $interval->format('%R%m');

wie soll ich dann mittels php die anzahl tage zwischen zwei beliebigen daten ermitteln??? dann bringt diese date_diff funktion ja nichts, oder?
 
Werbung:
Die Funktion date_diff() funktioniert so wie sie sollte!

wie soll ich dann mittels php die anzahl tage zwischen zwei beliebigen daten ermitteln?
Indem du die Funktion format() mit den entsprechenden Parametern aufrufst!

Kleiner Tip: Beide Beispiele auf PHP.net (Objektorientiert/Prozedural) haben den korrekten Parameter im Funktionsaufruf enthalten.
 
der aufruf von format() ist bereits in beiden beispielen vorhanden; siehe oben. aber eben: es funktioniert nicht wie ich das möchte... das zweite beispiel liefert +7, obwohl die daten fast 3 jahre auseinanderliegen.

auch für die berchnung der anzahl tage hat man dasselbe problem.
 
Werbung:
Morgen, also auf das Problem habe ich die Antwort :)

die +7 als Ausgabe sind richtig und zwar aus folgendem Grund. Du prüfst nur die differenz zwischen den Monaten.
Sprich (Oktober) 10 bis (Mai) 5. Die Differenz beträgt genau 7
11,12,1,2,3,4,5 sind also 7 Monate.

Das gleiche hast du auch wenn du die Funktion format() mit "d" aufrufst. Er würde nur die Differenz der Tage berechnen und nicht noch der ganzen Monaten oder Jahre
Dafür müsstest du auf den Parameter "a" zurückgreifen. Dies steht aber auch auf der Seite die CPCoder gelinkt hat
 
ok... mit Parameter a funktionierts für die Tage. Für die Anzahl Monate gibts aber nichts analoges. Wie kann man jetzt (wie ursprünglich gefragt) die anzahl monate berechnen?
 
Das kannst du ganz einfach mit den Werten ausrechnen, die in dem Objekt $interval stehen.

Hier mal der Code dazu:
PHP:
$datetime1 = date_create('2009-10-11');
$datetime2 = date_create('2012-05-13');
$interval = date_diff($datetime1, $datetime2);
echo $interval->format('%R%a Tage'); // Gibt die Gesamtanzahl der Tage aus > +945 Tage
$months = 12 * $interval->y + $interval->m; // Gesamtanzahl der Monate berechnen
echo $months; // Ergebnis: 31
 
Werbung:
Zurück
Oben