PHP获取指定时间段之间的 年,月,天,时,分,秒

5年以前  |  阅读数:430 次  |  编程语言:PHP 

核心代码:


    Class Utils {
         /**
         * format MySQL DateTime (YYYY-MM-DD hh:mm:ss) 把mysql中查找出来的数据格式转换成时间秒数
         * @param string $datetime
         */
        public function fmDatetime($datetime) {
          $year = substr($datetime,0,4);
          $month = substr($datetime,5,2);
          $day = substr($datetime,8,2);
          $hour = substr($datetime,11,2);
          $min = substr($datetime,14,2);
          $sec = substr($datetime,17,2);
          return mktime($hour,$min,$sec,$month,$day,0+$year);
        }
        /**
         * 
         * 根据俩个时间获取俩个时间的 包含的 年,月数,天数,小时,分钟,秒
         * @param String $start
         * @param String $end
         * @return ArrayObject 
         */
         private function diffDateTime($DateStart,$DateEnd){
            $rs = array();

            $sYear = substr($DateStart,0,4);
            $eYear = substr($DateEnd,0,4);

            $sMonth = substr($DateStart,5,2);
            $eMonth = substr($DateEnd,5,2);

            $sDay = substr($DateStart,8,2);
            $eDay = substr($DateEnd,8,2);

            $startTime = $this->fmDatetime($DateStart);
            $endTime = $this->fmDatetime($DateEnd);
            $dis = $endTime-$startTime;//得到俩个时间的秒数
            $d = ceil($dis/(24*60*60));//得到天数
            $rs['day'] = $d;//天数
            $rs['hour'] = ceil($dis/(60*60));//小时
            $rs['minute'] = ceil($dis/60);//分钟
            $rs['second'] = $dis;//秒数
            $rs['week'] = ceil($d/7);//周

            $tem = ($eYear-$sYear)*12;//月份
            $tem1 = $eYear-$sYear;//年
            if($eMonth-$sMonth<0){//月份相减为负
                $tem +=($eMonth-$sMonth);
            }else if($eMonth==$sMonth){//月份相同
                if($eDay-$sDay>=0){
                    $tem ++;
                    $tem1++;
                }
            }else if($eMonth-$sMonth>0){//月份相减正负
                $tem1++;
                if($eDay-$sDay>=0){//且日期相减为正数
                    $tem +=($eMonth-$sMonth)+1;
                }else{
                    $tem +=($eMonth-$sMonth);
                }
            }
            $rs['month'] = $tem;
            $rs['year'] = $tem1;

            return $rs;
        }
    }

一年多一天,返回的是2年,一个月多一天返回的是2个月,以此推......项目需要,才做此出来,开始我也到网上找这样的例子,但大家都是把年就按365天来算,月就按30天来算,这样算出来的结果肯定是没用的,年有可能是366天,月有可能是31,29,28都有可能

 相关文章:
PHP分页显示制作详细讲解
SSH 登录失败:Host key verification failed
获取IMSI
将二进制数据转为16进制以便显示
获取IMEI
文件下载
贪吃蛇
双位运算符
PHP自定义函数获取搜索引擎来源关键字的方法
Java生成UUID
发送邮件
年的日历图
提取后缀名
在Zeus Web Server中安装PHP语言支持
让你成为最历害的git提交人
Yii2汉字转拼音类的实例代码
再谈PHP中单双引号的区别详解
指定应用ID以获取对应的应用名称
Python 2与Python 3版本和编码的对比
php封装的page分页类完整实例