通过添加时间间隔来计算总时间

时间:2016-04-18 11:07:13

标签: php

我得到了H:i:s格式的奇怪时间间隔,如下所示:

$interval1 = 12:15:33;
$interval2 = 0:36:10;
$interval3 = 0:1:30;

现在我想将所有这些间隔加在一起,如

 $total = $interval1 +  $interval2 +  $interval3;

这是我的PHP代码

function addinterval($x,$y){
    $x = explode(':', $x);
    $y = explode(':', $y);
    $seconds = $minit = $hours = 0;

    $seconds = $x[2] + $y[2];
    if($seconds > 60){
        $seconds = $seconds - 60;
        $minit = $minit + 1;
    }
    $minit = $minit + $x[1] + $y[1];
    if($minit > 60){
        $minit = $minit - 60;
        $hours = $hours + 1;
    }
    $hours = $hours +  $x[0] + $y[0];
    return $hours. ':' . $mint . ':' . $seconds;

}



$first = addinterval('12:15:33','0:36:10');
echo 'The result :' . $first;
$second = addinterval($first, '0:1:30');
echo 'The final result' . $second;

3 个答案:

答案 0 :(得分:3)

使用strtotime()

$interval1 = "12:15:33";
$interval2 = "0:36:10";
$interval3 = "0:1:30";

$interval2Sec = strtotime($interval2)-strtotime("00:00:00");
$interval3Sec = strtotime($interval3)-strtotime("00:00:00");

$total = strtotime($interval1) + $interval2Sec + $interval3Sec;
echo $time =date("Y-m-d h:i:s", $total);

<强>输出

2016-04-18 12:53:13

在线演示:Click Here

答案 1 :(得分:1)

function getSeconds($interval)
{
    list($h, $m, $s) = explode(':', $interval);

    return $h * 3600 + $m * 60 + $s;
}

echo date('Y-m-d H:i:s', strtotime(date('Y-m-d 00:00:00')) + getSeconds($interval1) + getSeconds($interval2) + getSeconds($interval3));

如果间隔时间超过一个当天,那将会很好。

Demo

答案 2 :(得分:0)

最好的方法是使用strtotime将它们转换为时间戳,然后再一起添加:

$o = strtotime($interval1)+strtotime($interval2)+strtotime($interval3);