如何在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)

其他回答

<?php
$start = strtotime('12:01:00');
$end = strtotime('13:16:00');
$mins = ($end - $start) / 60;
echo $mins;
?>

输出:

75

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

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

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

你得到你想要的结果。

我想这对你有帮助

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;
}