PC6下载站

分类分类

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

关注+2004-11-07作者:蓝点

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



?>





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

相关文章

更多+相同厂商

热门推荐

  • 最新排行
  • 最热排行
  • 评分最高
排行榜

    点击查看更多

      点击查看更多

        点击查看更多

        说两句网友评论

          我要评论...
          取消