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


Posted in PHP onOctober 09, 2006

这是一个计算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>\n";
$endday_from_startday=cal_start2end($end_day,$start_day);

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

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

PHP 相关文章推荐
mysql_fetch_row,mysql_fetch_array,mysql_fetch_assoc的区别
Apr 24 PHP
TMDPHP 模板引擎使用教程
Mar 13 PHP
PHP调用MsSQL Server 2012存储过程获取多结果集(包含output参数)的详解
Jul 03 PHP
php mysql_real_escape_string函数用法与实例教程
Sep 30 PHP
php实现的mongodb操作类
May 28 PHP
php简单图像创建入门实例
Jun 10 PHP
php页面,mysql数据库转utf-8乱码,utf-8编码问题总结
Aug 27 PHP
phpinfo()中Loaded Configuration File(none)的解决方法
Jan 16 PHP
PHP 实现页面静态化的几种方法
Jul 23 PHP
PHP实现的redis主从数据库状态检测功能示例
Jul 20 PHP
PHP使用ActiveMQ实现消息队列的方法详解
May 31 PHP
php pdo连接数据库操作示例
Nov 18 PHP
文件上传程序的全部源码
Oct 09 #PHP
一个简单计数器的源代码
Oct 09 #PHP
一个用mysql_odbc和php写的serach数据库程序
Oct 09 #PHP
PHP脚本数据库功能详解(下)
Oct 09 #PHP
PHP脚本数据库功能详解(中)
Oct 09 #PHP
PHP脚本数据库功能详解(上)
Oct 09 #PHP
屏蔽浏览器缓存另类方法
Oct 09 #PHP
You might like
火影忍者:三大瞳力之一的白眼,为什么没有写轮眼那么出色?
2020/03/02 日漫
PHP常用编译参数中文说明
2014/09/27 PHP
thinkPHP中验证码的简单实现方法
2016/12/05 PHP
jQuery实现菜单感应鼠标滑动动画效果的方法
2015/02/28 Javascript
jQuery实现表格行上移下移和置顶的方法
2015/05/22 Javascript
详解微信小程序 通过控制CSS实现view隐藏与显示
2017/05/24 Javascript
js字符串处理之绝妙的代码
2019/04/05 Javascript
ajaxfileupload.js实现上传文件功能
2019/04/19 Javascript
微信小程序调用天气接口并且渲染在页面过程详解
2019/06/24 Javascript
vue本地打开build后生成的dist文件夹index.html问题
2019/09/04 Javascript
如何在Vue中抽离接口配置文件
2019/10/31 Javascript
Vue 中使用 typescript的方法详解
2020/02/17 Javascript
详解element上传组件before-remove钩子问题解决
2020/04/08 Javascript
[36:05]完美世界DOTA2联赛循环赛 Forest vs DM 第一场 11.06
2020/11/06 DOTA
python中子类继承父类的__init__方法实例
2016/12/15 Python
基于Python函数的作用域规则和闭包(详解)
2017/11/29 Python
解析Python中的eval()、exec()及其相关函数
2017/12/20 Python
在python中获取div的文本内容并和想定结果进行对比详解
2019/01/02 Python
Python从函数参数类型引出元组实例分析
2019/05/28 Python
Python人工智能之路 jieba gensim 最好别分家之最简单的相似度实现
2019/08/13 Python
python 函数的缺省参数使用注意事项分析
2019/09/17 Python
python如何查看网页代码
2020/06/07 Python
python statsmodel的使用
2020/12/21 Python
CSS3实现内凹圆角的实例代码
2017/05/04 HTML / CSS
利用html5的websocket实现websocket聊天室
2013/12/12 HTML / CSS
HTML5拖放API实现自动生成相框功能
2020/04/07 HTML / CSS
中医临床专业自我鉴定范文
2014/01/15 职场文书
给校长的建议书100字
2014/05/16 职场文书
2014年个人技术工作总结
2014/12/08 职场文书
经理助理岗位职责
2015/02/02 职场文书
党员志愿者服务倡议书
2015/04/29 职场文书
给老师的保证书怎么写
2015/05/09 职场文书
童年读书笔记
2015/06/26 职场文书
欠条样本
2015/07/03 职场文书
浅析MySQL如何实现事务隔离
2021/06/26 MySQL
opencv深入浅出了解机器学习和深度学习
2022/03/17 Python