如何从数组中计算 HH:mm:ss 格式的时间
How to calculate time in HH:mm:ss format from array
我正在尝试根据以 HH:mm:ss 格式存储时间的数组来计算时间,我正在根据这段代码制作时间数组,
$result=[];
foreach ($playerTimes as $playerTime) {
$playerStartTime = (isset($playerTime->start_time))? $playerTime->start_time: '00:00:00';
$playerEndTime = (isset($playerTime->End_time))? $playerTime->End_time: '00:00:00';
$result[] = \Carbon\Carbon::parse($playerStartTime)->diff(\Carbon\Carbon::parse($playerEndTime))->format('%H:%I:%S');
}
我得到这个数组
array:3 [0 => "08:44:14" 1 => "10:46:16" 2 => "12:48:18"]
加法后我想达到的结果是32:18:48
我试过了,但是我得到的结果是 08:18:48
这不是我需要的,
$result[] = \Carbon\Carbon::parse($playerStartTime)->diffInSeconds(\Carbon\Carbon::parse($playerEndTime));
dd(gmdate("H:i:s", array_sum($result)));
您 运行 遇到的问题是 H:i:s
格式不支持您在此尝试实现的目标,因为 H
永远不会大于 23,也不小于 0。
有两种可能的解决方案:您可以使用 Y-m-d H:i:s
来显示年、月和日的差异,或者您可以使用这些值将它们转换回小时,或计算小时秒差(所以秒差 / 60 / 60 = 小时),然后从那里开始工作。
我正在尝试根据以 HH:mm:ss 格式存储时间的数组来计算时间,我正在根据这段代码制作时间数组,
$result=[];
foreach ($playerTimes as $playerTime) {
$playerStartTime = (isset($playerTime->start_time))? $playerTime->start_time: '00:00:00';
$playerEndTime = (isset($playerTime->End_time))? $playerTime->End_time: '00:00:00';
$result[] = \Carbon\Carbon::parse($playerStartTime)->diff(\Carbon\Carbon::parse($playerEndTime))->format('%H:%I:%S');
}
我得到这个数组
array:3 [0 => "08:44:14" 1 => "10:46:16" 2 => "12:48:18"]
加法后我想达到的结果是32:18:48
我试过了,但是我得到的结果是 08:18:48
这不是我需要的,
$result[] = \Carbon\Carbon::parse($playerStartTime)->diffInSeconds(\Carbon\Carbon::parse($playerEndTime));
dd(gmdate("H:i:s", array_sum($result)));
您 运行 遇到的问题是 H:i:s
格式不支持您在此尝试实现的目标,因为 H
永远不会大于 23,也不小于 0。
有两种可能的解决方案:您可以使用 Y-m-d H:i:s
来显示年、月和日的差异,或者您可以使用这些值将它们转换回小时,或计算小时秒差(所以秒差 / 60 / 60 = 小时),然后从那里开始工作。