首页 > 代码库 > php计算两个日期时间差(返回年、月、日)

php计算两个日期时间差(返回年、月、日)

在PHP程序中,很多时候都会遇到处理时间的问题,比如:判断用户在线了多长时间,共登录了多少天,两个帖子发布的时间差或者是不同操作之间的日志记录等等。在文章中,简单地举例介绍了PHP中如何计算两个日期相差 年、月、日。

方法一:

/**  +----------------------------------------------------------  * 功能:计算两个日期相差 年 月 日  +----------------------------------------------------------  * @param date   $date1 起始日期  * @param date   $date2 截止日期日期  +----------------------------------------------------------  * @return array        +----------------------------------------------------------  */function DiffDate($date1, $date2) {   if (strtotime($date1) > strtotime($date2)) {     $ymd = $date2;     $date2 = $date1;     $date1 = $ymd;   }   list($y1, $m1, $d1) = explode(‘-‘, $date1);   list($y2, $m2, $d2) = explode(‘-‘, $date2);   $y = $m = $d = $_m = 0;   $math = ($y2 - $y1) * 12 + $m2 - $m1;   $y = round($math / 12);   $m = intval($math % 12);   $d = (mktime(0, 0, 0, $m2, $d2, $y2) - mktime(0, 0, 0, $m2, $d1, $y2)) / 86400;   if ($d < 0) {     $m -= 1;     $d += date(‘j‘, mktime(0, 0, 0, $m2, 0, $y2));   }   $m < 0 && $y -= 1;   return array($y, $m, $d); } ?>

  

方法二:

通过DateTime下的diff方法

 

方法三:

function diffDate($date1,$date2){    $datestart= date(‘Y-m-d‘,strtotime($date1));    if(strtotime($datestart)>strtotime($date2)){        $tmp=$date2;        $date2=$datestart;        $datestart=$tmp;    }    list($Y1,$m1,$d1)=explode(‘-‘,$datestart);    list($Y2,$m2,$d2)=explode(‘-‘,$date2);    $Y=$Y2-$Y1;    $m=$m2-$m1;    $d=$d2-$d1;    if($d<0){        $d+=(int)date(‘t‘,strtotime("-1 month $date2"));        $m--;    }    if($m<0){        $m+=12;        $y--;    }    if($Y == 0){        return $m.‘个月‘.$d.‘天‘;    }elseif($Y == 0 && $m == 0){        return $d.‘天‘;    }else{        return $Y.‘年‘.$m.‘个月‘.$d.‘天‘;    }} 

 

php计算两个日期时间差(返回年、月、日)