计算格式为YYYY-MM-DD HH:ii:ss的两个时间,相差多少年、多少月、多少日、多少小时、多少分钟、多少秒?

来源:互联网 发布:618酒类网站源码 编辑:程序博客网 时间:2024/04/25 14:51
<?php    function diffDateTime($datetime1,$datetime2){        $preg = "/^\d{4}\-\d{2}\-\d{2}(\s)+\d{2}:\d{2}:\d{2}$/";//验证时间格式是否为YYYY-MM-DD HH:ii:ss        if(!preg_match($preg, $datetime1) || !preg_match($preg, $datetime2)) exit('Format Error');        if(strtotime($datetime1) > strtotime($datetime2)){              $tmp = $datetime2;              $datetime2 = $datetime1;              $datetime1 = $tmp;          }        list($date1,$time1) = explode(' ',$datetime1);          list($date2,$time2) = explode(' ',$datetime2);        list($year1,$month1,$day1) = explode('-',$date1);        list($year2,$month2,$day2) = explode('-',$date2);        if(!checkdate($month1,$day1,$year1) || !checkdate($month2,$day2,$year2)) exit('Invalid Date');        $diff_year = $year2 - $year1;        $diff_month = $month2 - $month1;          $diff_day = $day2 - $day1;        if($diff_day < 0){              $diff_day += (int)date('t',strtotime("-1 month $date2"));              $diff_month--;          }          if($diff_month < 0){              $diff_month += 12;              $diff_year--;          }          //计算时间差        $timediff = abs(strtotime($time2) - strtotime($time1));        //计算小时数        $diff_hour = intval($timediff / 3600);        //计算分钟数        $remain = $timediff % 3600;        $diff_minute = intval($remain / 60);        //计算秒数        $diff_second = $remain % 60;        return array(            'diff_year' => $diff_year,            'diff_month' => $diff_month,            'diff_day' => $diff_day,            'diff_hour' => $diff_hour,            'diff_minute' => $diff_minute,            'diff_second' => $diff_second        );      }    var_dump(diffDateTime('2019-02-27 12:20:15','2017-02-02 12:19:55'));


输出:

array (size=6)
  'diff_year' => int 2
  'diff_month' => int 0
  'diff_day' => int 25
  'diff_hour' => int 0
  'diff_minute' => int 0
  'diff_second' => int 20


阅读全文
0 0