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


Calculating the total time by adding the time intervals

我得到了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;

使用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

在线演示:点击此处

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

当间隔的总和超过一天时,这将是很好的工作。

演示。

最好的方法是使用strtotime将它们转换为时间戳,然后进行相加:

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