如何在PHP中计算两个日期时间之间的分钟差异?


当前回答

求两个日期之差的方法在这里。有了这个功能,你可以找到秒、分、小时、天、年和月等差异。

function alihan_diff_dates($date = null, $diff = "minutes") {
 $start_date = new DateTime($date);
 $since_start = $start_date->diff(new DateTime( date('Y-m-d H:i:s') )); // date now
 print_r($since_start);
 switch ($diff) {
    case 'seconds':
        return $since_start->s;
        break;
    case 'minutes':
        return $since_start->i;
        break;
    case 'hours':
        return $since_start->h;
        break;
    case 'days':
        return $since_start->d;
        break;      
    default:
        # code...
        break;
 }
}

你可以开发这个函数。我测试过了,结果对我有用。DateInterval对象输出如下:

/*
DateInterval Object ( [y] => 0 [m] => 0 [d] => 0 [h] => 0 [i] => 5 [s] => 13 [f] => 0 [weekday] => 0 [weekday_behavior] => 0 [first_last_day_of] => 0 [invert] => 0 [days] => 0 [special_type] => 0 [special_amount] => 0 [have_weekday_relative] => 0 [have_special_relative] => 0 ) 
*/

功能用途:

$date =过去的日期, $diff =类型eg:“分钟”,“天”,“秒”

$diff_mins = alihan_diff_dates("2019-03-24 13:24:19", "minutes");

祝你好运。

其他回答

用未来最大的1减去过去最大的1,然后除以60。

时间是Unix格式的,所以它们只是一个大数字,显示了从格林尼治时间1970年1月1日00:00:00开始的秒数

我找到了很多解,但我从来没有得到正确的解。但是我已经创建了一些代码来查找分钟,请检查它。

<?php

  $time1 = "23:58";
  $time2 = "01:00";
  $time1 = explode(':',$time1);
  $time2 = explode(':',$time2);
  $hours1 = $time1[0];
  $hours2 = $time2[0];
  $mins1 = $time1[1];
  $mins2 = $time2[1];
  $hours = $hours2 - $hours1;
  $mins = 0;
  if($hours < 0)
  {
    $hours = 24 + $hours;
  }
  if($mins2 >= $mins1) {
        $mins = $mins2 - $mins1;
    }
    else {
      $mins = ($mins2 + 60) - $mins1;
      $hours--;
    }
    if($mins < 9)
    {
      $mins = str_pad($mins, 2, '0', STR_PAD_LEFT);
    }
    if($hours < 9)
    {
      $hours =str_pad($hours, 2, '0', STR_PAD_LEFT);
    }
echo $hours.':'.$mins;
?>

它以小时和分钟为单位输出,例如01小时02分钟,如01:02

试试这个

$now = \Carbon\Carbon::now()->toDateString(); // get current time 
             $a = strtotime("2012-09-21 12:12:22"); 
             $b = strtotime($now);
             $minutes = ceil(($a - $b) / 3600); it will get ceiling value 

时区的另一种方法。

$start_date = new DateTime("2013-12-24 06:00:00",new DateTimeZone('Pacific/Nauru'));
$end_date = new DateTime("2013-12-24 06:45:00", new DateTimeZone('Pacific/Nauru'));
$interval = $start_date->diff($end_date);
$hours   = $interval->format('%h'); 
$minutes = $interval->format('%i');
echo  'Diff. in minutes is: '.($hours * 60 + $minutes);

以下是答案:

$to_time = strtotime("2008-12-13 10:42:00");
$from_time = strtotime("2008-12-13 10:21:00");
echo round(abs($to_time - $from_time) / 60,2). " minute";