我正在尝试从以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 =小时),然后从那里开始工作。