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

  作者:bea

这是一个计算2000年01月01日起到指定日的天数的函数 <br> (算头也算尾)日期格式为:YYYY-MM-DD <br> <?php //计算从2000年01月01日开始到某日的天数 function cal_start2end($end_day,$start_day) { $start_day=ereg_replace("-","",$start_day); $end_day=ereg_replace("-","",$end_day); i
这是一个计算2000年01月01日起到指定日的天数的函数

<br>

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

<br>



<?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."<br>
";

$endday_from_startday=cal_start2end($end_day,$start_day);



echo "该日距离$start_day 共 ".$endday_from_startday." 天";



?>

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


有用  |  无用

猜你喜欢