从2个变量中获取总小时数

时间:2019-03-19 06:22:20

标签: php

这是我的代码:

$time = "20:58:05";
$time2 = "10:40:00";

$secs = strtotime($time2)-strtotime("00:00:00");
$result = date("H:i:s",strtotime($time)+$secs);
echo $result;

以上代码的输出为-07:38:05

我希望它显示为-31:38:05。我该如何实现?

2 个答案:

答案 0 :(得分:4)

将两个时间都转换为秒,将它们相加,然后自己计算小时,分钟和秒。

$time = "20:58:05";
$time2 = "10:40:00";

$secs = strtotime($time)-strtotime("00:00:00");
$secs2 = strtotime($time2)-strtotime("00:00:00");
$total = $secs + $secs2;
$hours = floor($total/3600);
$mins = floor(($total % 3600) / 60);
$secs = $total % 60;
echo sprintf("%d:%02d:%02d", $hours, $mins, $secs);

答案 1 :(得分:0)

Barmar的解决方案在添加小时数低于24:00:00时有效,但是当您添加2个变量且每个变量超过24:00:00时,将给出错误的输出。例如:

$time = "20:58:05";
$time2 = "30:40:00";

$secs = strtotime($time)-strtotime("00:00:00");
$secs2 = strtotime($time2)-strtotime("00:00:00");
$total = $secs + $secs2;
$hours = floor($total/3600);
$mins = floor(($total % 3600) / 60);
$secs = $total % 60;
echo sprintf("%d:%02d:%02d", $hours, $mins, $secs);

以上代码的输出:-431348:-2:-55

即使变量的数据超过24:00:00,这里的代码仍然有效:

  function sum_the_time($time1, $time2) {
  $times = array($time1, $time2);
  $seconds = 0;
  foreach ($times as $time)
  {
    list($hour,$minute,$second) = explode(':', $time);
    $seconds += $hour*3600;
    $seconds += $minute*60;
    $seconds += $second;
  }
  $hours = floor($seconds/3600);
  $seconds -= $hours*3600;
  $minutes  = floor($seconds/60);
  $seconds -= $minutes*60;
  if($seconds < 9)
  {
  $seconds = "0".$seconds;
  }
  if($minutes < 9)
  {
  $minutes = "0".$minutes;
  }
    if($hours < 9)
  {
  $hours = "0".$hours;
  }
  return "{$hours}:{$minutes}:{$seconds}";
}

我找到了此代码here