获得两次hh:mm格式和24小时以上的差异

时间:2017-11-08 09:17:14

标签: php date

我希望两次获得hh:mm格式的差异。我正在使用这个功能

<?php
function timeDiff($firstTime,$lastTime) {
    $firstTime=strtotime($firstTime);
    $lastTime=strtotime($lastTime);
    $timeDiff=$lastTime-$firstTime;
    return $timeDiff;
}

echo (timeDiff("10:00","20:00")/60)/60;
?>

问题是,如果我的时间少于24小时它就能完美运行。但是我需要它可以工作长达60个小时。与60:00 - 02:25 should give me 57:3560:00 - 00:00 should give me 60:00一样。我哪里做错了?

2 个答案:

答案 0 :(得分:1)

如果您只使用小时+分钟,那么您可以自己计算时间戳,如下所示:

function calculateSeconds($time) {
    $timeParts = explode(':', $time);
    return (int)$timeParts[0] * 3600 + (int)$timeParts[1] * 60;
}

然后在你的函数中使用它

function timeDiff($firstTime, $lastTime) {
    return calculateSeconds($lastTime) - calculateSeconds($firstTime);
}

答案 1 :(得分:1)

您可以使用gmdate()功能。

function timeDiff($firstTime,$lastTime) {
    $a_split = explode(":", $firstTime);
    $b_split = explode(":", $lastTime);
    $a_stamp = mktime($a_split[0], $a_split[1]);
    $b_stamp = mktime($b_split[0], $b_split[1]);
    if($a_stamp > $b_stamp)
    {
        $diff = $a_stamp - $b_stamp; //69600
    }else{
        $diff = $b_stamp - $a_stamp; //69600
    }
    $min = gmdate("i", $diff); 
    $d_hours = gmdate("d", $diff)==1 ? 0 :  gmdate("d", $diff)*12 ;
    $hours = $d_hours + gmdate("H", $diff) ;
    echo $hours . ':' . $min; // 56:12:12
}
timeDiff("35:05", "01:45");