php输出01到09,计算2000年01月01日起到指定日的天数_php基础_脚本

计算2000年01月01日起到指定日的天数_php基础_脚本

发布时间:2016-06-17 来源: 点击:

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

?>


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

这就是微学网-程序员之家为你提供的"计算2000年01月01日起到指定日的天数_php基础_脚本"希望对你有所帮助.本文来自网络,转载请注明出处:http://www.weixuecn.cn/article/1227.html

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值