欢迎来到福编程网,本站提供各种互联网专业知识!

计算2000年01月01日起到指定日的天数

发布时间:2006-10-09 作者: 来源:转载
这是一个计算2000年01月01日起到指定日的天数的函数(算头也算尾)日期格式为:YYYY-MM-DD时间太少了,那位大虾可以修改为计算任意两日期之间的间隔最好!!!!!
这是一个计算2000年01月01日起到指定日的天数的函数

(算头也算尾)日期格式为:YYYY-MM-DD

//计算从2000年01月01日开始到某日的天数

function cal_start2end($end_day,$start_day)

{

$start_day=ereg_replace("-","",$start_day);

$end_day=ereg_replace("-","",$end_day);

if($end_day>=$start_day)

{//截止日期大于开始日期

if(substr($end_day,0,4)==substr($start_day,0,4))

{

if( is_int(substr($end_day,0,4)/4) )

$leap_day=29;//leap year

else

$leap_day=28;

////同一年

if(substr($end_day,4,2)==substr($start_day,4,2))

{

//the same month

$endday_from_startday=$end_day-$start_day+1;

}

else

{

//not same month

switch (substr($end_day,4,2))

{

case "01":

$endday_from_newyear=substr($end_day,6,2)+1;

break;

case "02":

$endday_from_newyear=substr($end_day,6,2)+31;

break;

case "03":

$endday_from_newyear=substr($end_day,6,2)+$leap_day+31;

break;

case "04":

$endday_from_newyear=substr($end_day,6,2)+1+$leap_day+31*2;

break;

case "05":

$endday_from_newyear=substr($end_day,6,2)+1+$leap_day+31*2+30;

break;

case "06":

$endday_from_newyear=substr($end_day,6,2)+1+$leap_day+31*3+30;

break;

case "07":

$endday_from_newyear=substr($end_day,6,2)+1+$leap_day+31*2+30*2;

break;

case "08":

$endday_from_newyear=substr($end_day,6,2)+1+$leap_day+31*3+30*2;

break;

case "09":

$endday_from_newyear=substr($end_day,6,2)+1+$leap_day+31*5+30*2;

break;

case "10":

$endday_from_newyear=substr($end_day,6,2)+1+$leap_day+31*5+30*3;

break;

case "11":

$endday_from_newyear=substr($end_day,6,2)+1+$leap_day+31*5+30*4;

break;

case "12":

$endday_from_newyear=substr($end_day,6,2)+1+$leap_day+31*5+30*5;

break;

}

$endday_from_startday=$endday_from_newyear;

}

return ($endday_from_startday);

}

else

{

//不同年!

$differ_year=substr($end_day,0,4)-substr($start_day,0,4);

$how_int_4_floor=floor($differ_year/4)+1; // 向下取整

$how_int_4_ceil=ceil($differ_year/4)+1; // 向上取整

if($how_int_4_floor==$how_int_4_ceil)

$how_leap_year=$how_int_4_floor-1;

else

$how_leap_year=$how_int_4_floor;

$how_noleap_year=$differ_year-$how_leap_year;

$differ_year2day=$how_noleap_year*365+$how_leap_year*366;

if( is_int(substr($end_day,0,4)/4) )

$leap_day=29;//leap year

else

$leap_day=28;

if(substr($end_day,4,2)==substr($start_day,4,2))

{

//the same month

$endday_from_startday=$differ_year2day+ substr($end_day,4,2);

}

else

{

//not same month

switch (substr($end_day,4,2))

{

case "01":

$endday_from_newyear=substr($end_day,6,2)+1;

break;

case "02":

$endday_from_newyear=substr($end_day,6,2)+1+31;

break;

case "03":

$endday_from_newyear=substr($end_day,6,2)+1+$leap_day+31;

break;

case "04":

$endday_from_newyear=substr($end_day,6,2)+1+$leap_day+31*2;

break;

case "05":

$endday_from_newyear=substr($end_day,6,2)+1+$leap_day+31*2+30;

break;

case "06":

$endday_from_newyear=substr($end_day,6,2)+1+$leap_day+31*3+30;

break;

case "07":

$endday_from_newyear=substr($end_day,6,2)+1+$leap_day+31*2+30*2;

break;

case "08":

$endday_from_newyear=substr($end_day,6,2)+1+$leap_day+31*3+30*2;

break;

case "09":

$endday_from_newyear=substr($end_day,6,2)+1+$leap_day+31*5+30*2;

break;

case "10":

$endday_from_newyear=substr($end_day,6,2)+1+$leap_day+31*5+30*3;

break;

case "11":

$endday_from_newyear=substr($end_day,6,2)+1+$leap_day+31*5+30*4;

break;

case "12":

$endday_from_newyear=substr($end_day,6,2)+1+$leap_day+31*5+30*5;

break;

} //End of switch

$endday_from_startday=$endday_from_newyear+$differ_year2day;

}//End ofnot same month

return ($endday_from_startday);

} //End of year

}//End of$end_day>=$start_day

} //End of function

$start_day="2000-01-01";

$end_day="2011-01-01";

echo "您输入的是:".$end_day."

n";

$endday_from_startday=cal_start2end($end_day,$start_day);

echo "该日距离$start_day 共 ".$endday_from_startday." 天";

?>

时间太少了,那位大虾可以修改为计算任意两日期之间的间隔最好!!!!!

相关推荐