Der Martin: Fehler im PHP date_diff?

Beitrag lesen

Moin,

Folgendes einfaches Script ergibt unverständlicherweise 0 anstatt der erwarteten 1.

$date1=date_create("2016-02-01");
$date2=date_create("2016-03-01");
$diff=date_diff($date1,$date2,true);
echo $diff->format("%m");

Wenn ich bei $date2 anstelle vom März den April eintrage, dann wird korrekt "2" ausgegeben.

Hat jemand eine Erklärung?

ja, aber als reine Vermutung: Monate sind unterschiedlich lang. Da bei einer reinen Differenz aber der Kalenderbezug flötengeht, muss date_diff beim Berechnen der Monate von einer "typischen" Länge ausgehen, vermutlich 30. Der Februar hatte in diesem Jahr 29 Tage, also ergibt sich "weniger als 1 Monat" und das wird auf 0 abgerundet, während Februar und März in Summe 60 Tage hatten, also 2 Monate.

Ist das plausibel?

So long,
 Martin

--
Nothing travels faster than the speed of light with the possible exception of bad news, which obeys its own special laws.
- Douglas Adams, The Hitchhiker's Guide To The Galaxy