Как добавить определенное количество времени в 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