我有一个应用程序,可以从多个记录中计算出小时数。现在,如果小时数返回我的位数超过2位,我会发现一种情况。
例如,我有一个3位数字的$total = '102:00:00'
,它会向我返回此错误:
A two digit minute could not be found
尝试执行此操作时发生错误:Carbon::createFromFormat('H:i:s', $total);
我该如何解决?
谢谢
答案 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);