当前位置:Gxlcms > PHP教程 > 计算2000年01月01日起到指定日的天数_PHP

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

时间:2021-07-01 10:21:17 帮助过:6人阅读

这是一个计算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 of not 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." 天";

?>




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

人气教程排行