Вычислить время, прошедшее через php, – более 24 часов

То, что я пытаюсь сделать, это добавить часы / минуты / секунды, которые охватывают более 24 часов, например:

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

То, что я хотел бы вернуть, – «39:43:30», а не дата с 1970 года. Ниже приведен код, который я использую в настоящее время (обратите внимание – его изнутри класса, а не только из функции).

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

Любые рекомендации будут высоко оценены.

Related of "Вычислить время, прошедшее через php, – более 24 часов"

Вот небольшая функция, которая будет добавлять любое количество раз в массив:

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

Используйте его так:

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

Вывод:-

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

Функции даты всегда работают / день / месяц / год. То, что вы хотите, является простой математической функцией, не проверял ее, а должно было прояснить ее.

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