php 指定日期 1,计算2000年01月01日起到指定日的天数_php

这是一个PHP函数,用于计算从2000年01月01日开始到指定日期的天数,包括起始日。函数首先检查日期是否在同一年内,然后根据月份和日期计算天数差。对于不同年份的情况,它会考虑闰年并计算跨年的天数。此代码可以作为计算任意两个日期之间天数差的基础。
摘要由CSDN通过智能技术生成

这是一个计算2000年01月01日起到指定日的天数的函数

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

http://www.gaodaima.com/47290.html计算2000年01月01日起到指定日的天数_php

//    计算从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." 天";

?>


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

欢迎大家阅读《计算2000年01月01日起到指定日的天数_php》,跪求各位点评,若觉得好的话请收藏本文,by 搞代码

e7ce419cf2d6ad34d01da2ceb8829eed.png

微信 赏一包辣条吧~

023a57327877fb4402bcc76911ec18ea.png

支付宝 赏一听可乐吧~

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值