如何找到大于24小时的2个时间变量之间的时差

时间:2011-11-10 20:50:39

标签: php time

我需要找出超过24:00:00的时间值(它们的差异)之间的时间。

例如:如何计算42:00:0037:30:00之间的差异?

使用strtotimestrptotime等是无用的,因为它们无法超过23:59:59 ....

3 个答案:

答案 0 :(得分:3)

$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()将秒转换为HH:MM:SS(如果需要)。

答案 1 :(得分:0)

日期/时间变量和函数在这里不合适,因为您没有存储时间,而是(我假设)小时,分钟和秒的时间跨度。

可能你的最佳解决方案是将每个时间跨度分成整数组件,转换为单个单位(例如,秒),相互减去它们,然后重新构建适合的输出时间跨度你的申请。

答案 2 :(得分:0)

我没有测试过这个,但这可能会做你想要的:

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