碳计数小时(3位数字)

时间:2019-03-28 13:43:01

标签: php laravel php-carbon

我有一个应用程序,可以从多个记录中计算出小时数。现在,如果小时数返回我的位数超过2位,我会发现一种情况。

例如,我有一个3位数字的$total = '102:00:00',它会向我返回此错误:

A two digit minute could not be found

尝试执行此操作时发生错误:Carbon::createFromFormat('H:i:s', $total);

我该如何解决?

谢谢

2 个答案:

答案 0 :(得分:0)

我认为您不应混淆实际的日期(时间)和时间间隔。面向DateTime的功能将无济于事。只需创建您自己的函数即可添加两个功能。参见下面的(伪)代码

function add_duration($h1,$m1,$s1,$h2,$m2,$s2)
{
  $s3 = ($s1 + $s2)%60;
  $m3 = ($m1 + $m2 + floor(($s1 + $s2)/60))%60;
  $h3 = $h1 + $h2 + floor(($m1 + $m2 + floor(($s1 + $s2)/60))/60);
  return [$h3,m3,s3];
}

答案 1 :(得分:0)

这是我的猜测:

$time1 = '05:00:00';
$time2 = '120:00:00';
$components1 = explode(':', $time1);
$components2 = explode(':', $time2);
$diff = ($components2[0] * 3600 + $components2[1] * 60 + $components2[2]) - ($components1[0] * 3600 + $components1[1] * 60 + $components1[2]);
$total = floor($diff / 3600) . gmdate(":i:s", $diff % 3600);