php自带的日期函数算是比较全的,使用也简单,但都是通过转换unix时间戳计算。虽然php有效的时间戳典型范围已扩增为格林威治时间1901 年 12 月 13 日 20:45:54 到 2038 年 1 月 19 日 03:14:07。其计算时间仍较窄,本人试着写了一个计算公元后所有年份的天数差的php日期差函数,主要是一个思路,不全之处(如日期格式、日期变量的获取等),望大家补足。

<?php
//计算距公元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;

}

?>

作者:xssh004

原文链接:php日期差函数http://www.drulanz.com/website-build/lamp/phpdaysdiff/

《楠云资讯工作室》版权所有,转载时必须以链接形式注明作者和原始出处及本声明。

© 2010, 楠云资讯工作室.

暂时没有相关的参考资料!