Calcule o tempo decorrido em php-spans durante 24 horas

O que eu estou tentando fazer é adicionar horas / mins / segundos que abranjam mais de 24 horas, por exemplo:

12:39:25 08:22:10 11:08:50 07:33:05 

O que eu gostaria de retornar é “39:43:30” em vez de uma data de 1970. Abaixo está o código que estou usando atualmente (nota – é de dentro de uma class, não apenas uma function).

 private function add_time($time1, $time2) { $first_exploded = explode(":", $time1); $second_exploded = explode(":", $time2); $first_stamp = mktime($first_exploded[0],$first_exploded[1],$first_exploded[2],1,1,1970); $second_stamp = mktime($second_exploded[0],$second_exploded[1],$second_exploded[2],1,1,1970); $time_added = $first_stamp + $second_stamp; $sum_time = date("H:i:s",$time_added); return $sum_time; } 

Qualquer aconselhamento seria muito apreciado.

Aqui está uma pequena function agradável que irá adicionar qualquer número de vezes passado em uma matriz: –

 function addTimes(Array $times) { $total = 0; foreach($times as $time){ list($hours, $minutes, $seconds) = explode(':', $time); $hour = (int)$hours + ((int)$minutes/60) + ((int)$seconds/3600); $total += $hour; } $h = floor($total); $total -= $h; $m = floor($total * 60); $total -= $m/60; $s = floor($total * 3600); return "$h:$m:$s"; } 

Use-o assim: –

 $times = array('12:39:25', '08:22:10', '11:08:50', '07:33:05',); var_dump(addTimes($times)); 

Saída:-

 string '39:43:30' (length=8) 

As funções de data sempre funcionam / com dia / mês / ano. O que você quer é uma function matemática simples, não o testou, mas deve deixar claro.

 private function add_time($base, $toadd) { $base = explode(':', $base); $toadd = explode(':', $toadd); $res = array(); $res[0] = $base[0] + $toadd[0]; $res[1] = $base[1] + $toadd[1]; $res[2] = $base[2] + $toadd[2]; // Seconds while($res[2] >= 60) { $res[1] += 1; $res[2] -= 60; } // Minutes while($res[1] >= 60) { $res[0] += 1; $res[1] -= 60; } return implode(':', $res); } 
Intereting Posts