1. 程式人生 > >PHP計算兩個日期相差的年數和剩下的天數,小時數

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