//计算距公元1年1月1日的天数,$yyyy年分,$mm月份,$dd日
function datelocal($yyyy,$mm,$dd){
$monthdays = array(31,28,31,30,31,30,31,31,30,31,30,31); //非闰年的月份天数
//判断是否为闰年,闰年$leapyear = 1,否则 $leapyear = 0
if($yy%4==0 && $yyyy%100!=0 || $yyyy%400==0)
$leapyear = 1;
else
$leapyear = 0;
//计算距公元1年1月1日的天数: 年天数+月天数+日天数
$days = ($yyyy-1)*365 + floor(($yyyy-1)/4) - floor(($yyyy-1)/100) + floor(($yyyy-1)/400);
for($i=1;$i<=$mm;$i++){
$days += $monthdays[$i-2];
if($leapyear==1 && $i==3) //所在年份为闰年,且月份超过2月:28天+1天
$days += 1;
}
$days += $dd -1;
return $days;
}
//计算 $yyyy2-$mm2-$dd2, $yyyy1-$mm1-$dd1 相差天数
function datediff($yyyy2,$mm2,$dd2,$yyyy1,$mm1,$dd1){
$daysdiff = abs(datelocal($yyyy2,$mm2,$dd2) - datelocal($yyyy1,$mm1,$dd1));
return $daysdiff;
}
echo datediff(2008,5,10,2009,5,1);