Home  >  Article  >  Backend Development  >  计算2000年01月01日起到指定日的天数_PHP

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

WBOY
WBOYOriginal
2016-06-01 12:29:141058browse

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

?>




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

Statement:
The content of this article is voluntarily contributed by netizens, and the copyright belongs to the original author. This site does not assume corresponding legal responsibility. If you find any content suspected of plagiarism or infringement, please contact admin@php.cn