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

这是一个计算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>时间太少了,那位大虾可以修改为计算任意两日期之间的间隔最好!!!!! 

时间: 2024-11-01 04:39:12

计算2000年01月01日起到指定日的天数的相关文章

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

这是一个计算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("-&qu

Postgres大学(象牙塔) 公开课 第3期 上海 2016年01月16-17日 德哥 亲自授课

Postgres大学(象牙塔) 公开课 [管理及开发基础] 感谢场地赞助:古大电子商务(上海)有限公司   线上报名:http://t.cn/R4S0PyQ   [课程介绍] Postgres有着悠久的历史,被公认为最先进的开源数据库,同时由于Postgres基于BSD进行开源,因此无论是任何企业都可以灵活地对Postgres进行重新的包装并产生自己的数据库产品.在政府倡导"自主可控"的大背景下得很了不少国内企业的支持,当前国内Postgres技术人员已经供不应求.   为此Postg

【笔记】2016年01月16日百度技术沙龙车库咖啡笔记

2016年01月16日 前端接入技术 GoLang BFE 七层流量接入平台 学习成本 开发成本 性能差别,可以接受,可以通过其他方式弥补 GC 垃圾收集 优化思路 减少对象数 用C代码来做 对象池 总结 不能改变太多,要跟随主流版本 解决 关闭GC,多进程工作 服务态,等待态,GC态 细节 多进程监听同一个端口 模块化->服务化 通过指标进行监控 百度搜索速度优化 速度的度量 客户端,JS埋点,第三方检测 速度优化 接入质量 ### RTT 识别 还可以根据位置信息综合判断接入商 分配 区域接

中国网络游戏下载流行榜10年01月第一周

(2010.01.03-2010.01.09) 中国网络游戏下载流行榜 2010年01月第一周 排名 游戏名 下载量 趋势 百分比 1 地下城与勇士 123359 ↓ -2.77 2 名将三国 79985 ↑ 629.79 3 QQ飞车 52268 ↑ 20.48 4 热血传奇 31619 ↑ 25.55 5 冒险岛 15970 ↓ -29.39 6 永恒之塔 14354 ↓ -12.43 7 绿色征途 11584 ↑ 3.73 8 征途 11159 ↑ 10.49 9 QQ三国 10871 ↓

[原创]侯佩日记摘录之一:2000年10月x日

[原创]侯佩日记摘录之一:2000年10月1+x日        关键字:侯佩,日记,摘录之一        四周是极度的黑,我还得以不死,张狂的窥探这个世界.坚强的意志弥补了我即将衰变退化的躯干,我小心的寻找着,搜索着- 终于,我发现了,一种极强的本能欲望驱使着我,暴露的青筋,跳动着的液体,我贪婪的吮吸着,吮吸着,我只有获得才能生存,而思考 使我谨慎和封闭.我没有沟通的对象,更多的时间是沉眠和幻想,而黑暗却滋养着我的敏锐,沉侵在美妙的黑宙中,使我更容易思考,而又越发的丑陋起来,连我也开始恶心自

DateTime.Now.ToString(&amp;amp;quot;dd&amp;amp;quot;)日期能否不要前面的0,比如01 日显示1日就行了

问题描述 DateTime.Now.ToString("dd")日期能否不要前面的0,比如01日显示1日就行了.怎么显示数值前面不要加0 解决方案 解决方案二:如果显示完整的日期,你可以"yyyy-M-d"进行格式化,如果只想显示天,则DateTime.Now.Day.ToString()也可以啊解决方案三:一个dDateTimedate=DateTime.Parse("2014-10-8");Console.WriteLine(date.ToS

专家称11月新增信贷回落至2000亿12月继续收紧

商报讯 继10月新增信贷创年内地量后,11月信贷将继续回落.记者昨日从知情人士处了解到,11月工行.农行.中行.建行4家大型国有商业银行新增贷款较10月小幅回落,总计达到1000亿元左右.按照10月份新增量占比54%来计算,11月全国金融机构人民币贷款也将继续回落至2000亿元.专家预计,年末最后一个月的信贷闸门将进一步收紧,但全年新增贷款仍可超过10万亿元大关. "年末贷得越多越不划算,不仅要扣资本金,还无法形成利润,不如把项目放到明年初,从而导致四大行11月新增信贷继续下滑."上述

美国硅谷一周动态(1月24日至30日)

新华网旧金山1月30日电(记者毛磊)美国硅谷一周动态(1月24日至30日) 雅虎取得一年来最佳季度业绩 美国雅虎公司26日公布的最新财务报告显示,在2009年第四季度,它的净利润达到1.53亿美元,与上年同期亏损3.03亿美元相比大为改善.这也是过去一年中雅虎盈利状况同比表现最好的一个季度. 雅虎去年第四季度的营业收入约为17.3亿美元,尽管同比下降4%,但降幅是当年四个季度中最小的.2009年1月,卡萝尔·巴茨接替杨致远担任雅虎首席执行官.分析人士指出,去年第四季度是雅虎迈入"巴茨时代&quo

2012 IDF将于4月11日、12日在北京国家会议中心隆重举行

英特尔信息技术峰会(IDF)是全球久负盛名的信息技术行业峰会之一,2012 IDF将于4月11日.12日在北京国家会议中心隆重举行,这也是自2007年以来连续第6年在中国首发.本届IDF将以"未来在我'芯'"为主题,前瞻IT产业的发展与计算体验的变革,共迎个性化计算时代的到来. 会议中演讲者首先向我们展示了数据中心不断的发展和演进的路程,数据中心中的三个基本要素:计算.网络.存储的应用效率在不断地提高. 随着大数据时代的到来,数据中心的数据每年都在成倍增加,而由于数据增加而导致的存储问