您的位置:首页网页设计PHP实例 → 计算2000年01月01日起到指定日的天数

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

时间:2004/11/7 3:25:00来源:本站整理作者:蓝点我要评论(0)

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



?>





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

相关阅读 Windows错误代码大全 Windows错误代码查询激活windows有什么用Mac QQ和Windows QQ聊天记录怎么合并 Mac QQ和Windows QQ聊天记录Windows 10自动更新怎么关闭 如何关闭Windows 10自动更新windows 10 rs4快速预览版17017下载错误问题Win10秋季创意者更新16291更新了什么 win10 16291更新内容windows10秋季创意者更新时间 windows10秋季创意者更新内容kb3150513补丁更新了什么 Windows 10补丁kb3150513是什么

文章评论
发表评论

热门文章 没有查询到任何记录。

最新文章 我的php文件怎么打开_php运算符怎么写 php 如何生成静态页面的函数PHP生成图片缩略图PHP session常见问题集锦及解决办法PHP实现同步远程Mysql

人气排行 DEDE在文章列表文章没有缩略图的不显示图片php+mysq修改用户密码我的php文件怎么打开_如何打开php文件的办法FCKeditor的配置和使用方法使用dedecms建站教程PHP+Ajax实现分页技术图片存储与浏览一例Linux+Apache+PHP+MySQLPHP生成图片缩略图