Как найти разницу во времени между двумя переменными времени, превышающими 24 часа - PullRequest
3 голосов
/ 11 ноября 2011

Мне нужно выяснить, сколько времени между значениями времени (их разницей), которые превышают 24: 00: 00.

Например: как я могу вычислить разницу между 42:00:00 и 37:30:00?

Использование strtotime, strptotime и т. Д. Бесполезно, так как они не могут быть более 23:59:59 ....

Ответы [ 3 ]

3 голосов
/ 11 ноября 2011
$a_split = explode(":", "42:00:00");
$b_split = explode(":", "37:30:00");

$a_stamp = mktime($a_split[0], $a_split[1], $a_split[2]);
$b_stamp = mktime($b_split[0], $b_split[1], $b_split[2]);

if($a_stamp > $b_stamp)
{
 $diff = $a_stamp - $b_stamp;
}else{
 $diff = $b_stamp - $a_stamp;
}

echo "difference in time (seconds): " . $diff;

, затем используйте date () для преобразования секунд в ЧЧ: ММ: СС, если хотите.

0 голосов
/ 11 ноября 2011

Я не проверял это, но это может сделать то, что вы хотите:

function timediff($time1, $time2) {
  list($h,$m,$s) = explode(":",$time1);
  $t1 = $h * 3600 + $m * 60 + $s;
  list($h2,$m2,$s2) = explode(":",$time2);
  $seconds = ($h2 * 3600 + $m2 * 60 + $s2) - $t1;
  return sprintf("%02d:%02d:%02d",floor($seconds/3600),floor($seconds/60)%60,$seconds % 60); 
}
0 голосов
/ 11 ноября 2011

Переменные и функции даты / времени здесь не подходят, так как вы не храните время, а вместо этого промежуток времени (я предполагаю) часов, минут и секунд.

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

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...