网站首页  汉语字词  英语词汇  考试资料  写作素材  旧版资料

请输入您要查询的考试资料:

 

标题 PHP获取指定时间段之间的 年,月,天,时,分,秒
内容
    前端传俩个标准的 时间格式过来,格式像2009-05-12 12:12:30,然后根据需要返回这个时间段的不同单位的表示,对于时间格式的校验我这里代码没贴出来,所以用的时候自己考虑加上
    核心代码:
    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都有可能
随便看

 

在线学习网考试资料包含高考、自考、专升本考试、人事考试、公务员考试、大学生村官考试、特岗教师招聘考试、事业单位招聘考试、企业人才招聘、银行招聘、教师招聘、农村信用社招聘、各类资格证书考试等各类考试资料。

 

Copyright © 2002-2024 cuapp.net All Rights Reserved
更新时间:2025/5/18 6:09:45