PHP计算两个日期相差的年数和剩下的天数,小时数

public function actionDemo3(){
        //功能:计算两个时间戳之间相差的日时分秒
        //$begin  开始时间戳
        //$end 结束时间戳
        //先计算相差的年份数,再用开始时间加上年份数得到第二开始时间,
        //再用第二开始时间与结束时间计算时间差
        $begin = "2012-07-15 00:00:00" ;
        $end = date("Y-m-d H:i:s") ;
        $aa = $this->diffDate($begin,$end) ;
        $year = intval($aa['y']) ;//相差年份

        if($year>0){
            $begin2 = date("Y-m-d H:i:s",strtotime("+{$year} year",strtotime($begin))) ;
        }else{
            $begin2 = $begin ;
        }

        var_dump($begin2);

        var_dump("------------") ;

        $begin_time = strtotime($begin2) ;
        $end_time = strtotime($end) ;
        if($begin_time < $end_time){
            $starttime = $begin_time;
            $endtime = $end_time;
        }else{
            $starttime = $end_time;
            $endtime = $begin_time;
        }

        //计算天数
        $timediff = $endtime-$starttime;
        $days = intval($timediff/86400);
        //计算小时数
        $remain = $timediff%86400;
        $hours = intval($remain/3600);
        //计算分钟数
        $remain = $remain%3600;
        $mins = intval($remain/60);
        //计算秒数
        $secs = $remain%60;
        $res = array("day" => $days,"hour" => $hours,"min" => $mins,"sec" => $secs);

        var_dump($res);exit;

    }


    public  function diffDate($date1,$date2)
    {
        $datetime1 = new \DateTime($date1);
        $datetime2 = new \DateTime($date2);
        $interval = $datetime1->diff($datetime2);
        $time['y']         = $interval->format('%Y');
        $time['m']         = $interval->format('%m');
        $time['d']         = $interval->format('%d');
        $time['h']         = $interval->format('%H');
        $time['i']         = $interval->format('%i');
        $time['s']         = $interval->format('%s');
        $time['a']         = $interval->format('%a');    // 两个时间相差总天数
        return $time;
    }


参考:https://segmentfault.com/a/1190000006795735


版权声明:本文为wuxing164原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接和本声明。