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


当前回答

另一种以分钟为单位计算差异的简单方法。请注意,这是一个在1年范围内计算的样本。详情请点击这里

$origin = new DateTime('2021-02-10 09:46:32');
$target = new DateTime('2021-02-11 09:46:32');
$interval = $origin->diff($target);
echo (($interval->format('%d')*24) + $interval->format('%h'))*60; //1440 (difference in minutes)

其他回答

它在我的程序上工作,我使用date_diff,你可以在这里检查date_diff手册。

$start = date_create('2015-01-26 12:01:00');
$end = date_create('2015-01-26 13:15:00');
$diff=date_diff($end,$start);
print_r($diff);

你得到你想要的结果。

这就是我如何显示“xx次前”在php > 5.2 ..这里是DateTime对象的更多信息

//Usage:
$pubDate = $row['rssfeed']['pubDates']; // e.g. this could be like 'Sun, 10 Nov 2013 14:26:00 GMT'
$diff = ago($pubDate);    // output: 23 hrs ago

// Return the value of time different in "xx times ago" format
function ago($timestamp)
{

    $today = new DateTime(date('y-m-d h:i:s')); // [2]
    //$thatDay = new DateTime('Sun, 10 Nov 2013 14:26:00 GMT');
    $thatDay = new DateTime($timestamp);
    $dt = $today->diff($thatDay);

    if ($dt->y > 0){
        $number = $dt->y;
        $unit = "year";
    } else if ($dt->m > 0) {
        $number = $dt->m;
        $unit = "month";
    } else if ($dt->d > 0) {
        $number = $dt->d;
        $unit = "day";
    } else if ($dt->h > 0) {
        $number = $dt->h;
        $unit = "hour";
    } else if ($dt->i > 0) {
        $number = $dt->i;
        $unit = "minute";
    } else if ($dt->s > 0) {
        $number = $dt->s;
        $unit = "second";
    }
    
    $unit .= $number  > 1 ? "s" : "";
 
    $ret = $number." ".$unit." "."ago";
    return $ret;
}
<?php
$start = strtotime('12:01:00');
$end = strtotime('13:16:00');
$mins = ($end - $start) / 60;
echo $mins;
?>

输出:

75
<?php
$date1 = time();
sleep(2000);
$date2 = time();
$mins = ($date2 - $date1) / 60;
echo $mins;
?>

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

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");

祝你好运。