Добавить время в PHP

Как добавить определенное количество времени в PHP?

Ниже приведены три переменных времени, которые я хотел бы добавить:

time1: "00:02:00" time2: "00:15:00" time3: "00:08:00" 

Это был мой подход в попытке достичь этого:

 echo date('h:i:s', strtotime('00:02:00') + strtotime('00:15:00') + strtotime('00:08:00')); 

Результат моего кода – 12:25:00 , а ожидаемый результат – 00:25:00 .

Что я делаю неправильно, и как я могу эффективно добавлять заданные временные переменные в PHP?

Перейдем от h к H

h => 12-часовой формат часа с ведущими нулями

H => 24-часовой формат часа с ведущими нулями

Пытаться

 echo date('H:i:s', strtotime('00:02:00') + strtotime('00:15:00') + strtotime('00:08:00')); 

Справка

У меня было несколько вопросов, обрабатывающих время в php.

Лучшим способом, который я когда-либо находил, было это (и этот способ, даже если ваш расчет пройдет через 24 часа, не вызовет проблем).

 <?php function time_to_sec($time) { list($h, $m, $s) = explode (":", $time); $seconds = 0; $seconds += (intval($h) * 3600); $seconds += (intval($m) * 60); $seconds += (intval($s)); return $seconds; } function sec_to_time($sec) { return sprintf('%02d:%02d:%02d', floor($sec / 3600), floor($sec / 60 % 60), floor($sec % 60)); } $time1 = time_to_sec("00:02:00"); $time2 = time_to_sec("00:15:00"); $time3 = time_to_sec("00:08:00"); $total = $time1 + $time2 + $time3; var_dump(sec_to_time($total)); ?> 

Надеюсь, я помог.

Вы можете так использовать. это будет работать.

 $arr = [ '00:02:00', '00:15:00', '00:08:00' ]; $hour =0;$min=0;$sec=0; foreach($arr as $a){ $time = explode(':',$a); $sec +=$time[2]; $min +=$time[1]; $hour += $time[0]; } echo sprintf('%02d',$hour).':'.sprintf('%02d',$min).':'.sprintf('%02d',$sec); 

Благодаря,

Попробуйте это. Это должно делать то, что вы ищете:

 <?php /** * @param array $times * @return string */ function sumOfDiffrentTime($times = array()) { $minutes = ''; $seconds = ''; // loop through all the times array foreach ($times as $time) { list($hour, $minute, $second) = explode(':', $time); $minutes += $hour * 60; $minutes += $minute; $seconds += (intval($second)); } $hours = floor($minutes / 60); $minutes -= $hours * 60; // returns the formatted time return sprintf('%02d:%02d:%02d', $hours, $minutes, $seconds); } $times = array(); $times[] = "00:02:00"; $times[] = "00:15:00"; $times[] = "00:08:00"; // pass your $times array to the function echo sumOfDiffrentTime($times); 

LIVE DEMO