• 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.'天';
        }
    } 
  • 相关阅读:
    算法
    算法
    算法
    算法
    算法
    【PAT】B1064 朋友数(20 分)
    【PAT】B1065 单身狗(25 分)
    【PAT】B1066 图像过滤(15 分)
    【PAT】B1067 试密码(20 分)
    【PAT】B1068 万绿丛中一点红(20 分)
  • 原文地址:https://www.cnblogs.com/huangye-dream/p/4174863.html
Copyright © 2020-2023  润新知