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

WBOY
Freigeben: 2016-06-01 12:29:14
Original
1057 Leute haben es durchsucht

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

?>




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

Verwandte Etiketten:
Quelle:php.cn
Erklärung dieser Website
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn
Beliebte Tutorials
Mehr>
Neueste Downloads
Mehr>
Web-Effekte
Quellcode der Website
Website-Materialien
Frontend-Vorlage