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


当前回答

$date1=date_create("2020-03-15");
$date2=date_create("2020-12-12");
$diff=date_diff($date1,$date2);
echo $diff->format("%R%a days");

有关详细的格式说明,请访问链接。

其他回答

以上答案适用于较旧版本的PHP。使用DateTime类来进行任何日期计算,因为PHP 5.3是标准的。 如。

$start_date = new DateTime('2007-09-01 04:10:58');
$since_start = $start_date->diff(new DateTime('2012-09-11 10:25:00'));
echo $since_start->days.' days total<br>';
echo $since_start->y.' years<br>';
echo $since_start->m.' months<br>';
echo $since_start->d.' days<br>';
echo $since_start->h.' hours<br>';
echo $since_start->i.' minutes<br>';
echo $since_start->s.' seconds<br>';

$since_start是一个DateInterval对象。注意,days属性是可用的(因为我们使用了DateTime类的diff方法来生成DateInterval对象)。

上面的代码将输出:

1837天总共5年0个月10天6小时14分2秒

获取总分钟数:

$minutes = $since_start->days * 24 * 60;
$minutes += $since_start->h * 60;
$minutes += $since_start->i;
echo $minutes.' minutes';

这将输出:

2645654分钟

也就是这两个日期之间的实际分钟数。DateTime类将考虑夏令时(取决于时区),而“旧方法”不会考虑。阅读有关日期和时间的手册http://www.php.net/manual/en/book.datetime.php

我想这对你有帮助

function calculate_time_span($date){
    $seconds  = strtotime(date('Y-m-d H:i:s')) - strtotime($date);

        $months = floor($seconds / (3600*24*30));
        $day = floor($seconds / (3600*24));
        $hours = floor($seconds / 3600);
        $mins = floor(($seconds - ($hours*3600)) / 60);
        $secs = floor($seconds % 60);

        if($seconds < 60)
            $time = $secs." seconds ago";
        else if($seconds < 60*60 )
            $time = $mins." min ago";
        else if($seconds < 24*60*60)
            $time = $hours." hours ago";
        else if($seconds < 24*60*60)
            $time = $day." day ago";
        else
            $time = $months." month ago";

        return $time;
}

试试这个

$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 

另一种以分钟为单位计算差异的简单方法。请注意,这是一个在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)

这是一个简单的一行代码:

$start = new DateTime('yesterday');
$end = new DateTime('now');
$diffInMinutes = iterator_count(new \DatePeriod($start, new \DateInterval('PT1M'), $end));