Moin!
Die Sache ist eigentlich ganz einfach, wenn man bedenkt, dass date('z') den Tag des Jahres (1.1.=0) zurückgibt. Ob es sich um ein Schaltjahr handelt verrät date('L'). Im gleichen Jahr braucht es nicht zu interessieren, weil date('z') korrekte Werte liefert. Ligen die Datumsangaben in verschiedenen Jahren muss nur untersucht werden ob das Vorjahr ein Schaltjahr ist. Da man aber dessen Tageszahl ohnehin braucht bietet sich die Lösung an, dass man diese Tageszahl direkt errechnet.
<?php
error_reporting(E_ALL);
function getTimeFromIsoDatum($str) {
$ar=explode('-',$str);
return mktime(0, 0, 0, $ar[1], $ar[2], $ar[0]);
}
$datum1=getTimeFromIsoDatum('2003-02-28');
$datum2=getTimeFromIsoDatum('2005-03-01');
if ($datum1 > $datum2) {
$tmp=$datum1;
$datum1=$datum2;
$datum2=$datum1;
}
$Jahr1=date('Y', $datum1);
$Jahr2=date('Y', $datum2);
$Tage1=date('z', $datum1);
$Tage2=date('z', $datum2);
if ($Tage2 >= $Tage1) {
die ("Differenz: ".($Jahr2-$Jahr1)." Jahre und ".($Tage2-$Tage1)." Tag[e]\n");
}
$diffJahre=$Jahr2-$Jahr1-1;
if (0 == $diffJahre) {
die ("Differenz: ".($Tage2-$Tage1)." Tag[e]\n");
}
$VorJahr=$Jahr2-1;
$TageVorjahr=365+date('L',mktime(0,0,0,1,1,$VorJahr));
$Tage=$TageVorjahr-$Tage1+$Tage2;
die ("Differenz: ".$diffJahre." Jahre und ".$Tage." Tag[e]\n");
?>
MFFG (Mit freundlich- friedfertigem Grinsen)
fastix