【发布时间】:2023-01-18 01:01:10
【问题描述】:
$array = [ '00:09:45', '00:50:05', '00:01:05', ]
我尝试了这个计算时间,但它不起作用。
【问题讨论】:
-
那不是计算,它是时间的字符串表示数组...请edit your question并包含更多详细信息;抱歉,您的问题目前没有任何意义。
$array = [ '00:09:45', '00:50:05', '00:01:05', ]
我尝试了这个计算时间,但它不起作用。
【问题讨论】:
我知道通过计算他的意思是加法。 (与翻译有关的细微差别)。下面是 Laravel 中的示例函数,它从数组中添加这些时间。为此,您应该使用 Carbon。
use CarbonCarbon;
function addTimes($times) {
$totalTime = Carbon::createFromTime(0, 0, 0);
foreach ($times as $time) {
$time = Carbon::createFromFormat('H:i:s', $time);
$totalTime->addSeconds($time->secondsSinceMidnight());
}
return $totalTime;
}
$times = [ '00:09:45', '00:50:05', '00:01:05', ];
$totalTime = addTimes($times);
echo $totalTime->format('H:i:s');
【讨论】:
我相信你想要总结时间的持续时间。我们可以在一个集合中对其进行改造,并通过添加次数来减少它。
use Carbon/Carbon;
$array = collect(['12:09:45', '11:50:05', '07:01:05']);
$total = $array->reduce(function ($time, $timeNext){
$carbonTimeNext = new Carbon($timeNext);
$time->addHours($carbonTimeNext->format('H'))
->addMinutes($carbonTimeNext->format('i'))
->addSeconds($carbonTimeNext->format('s'));
return $time;
}, new Carbon('00:00:00'));
echo $total->shortAbsoluteDiffForHumans(new Carbon('00:00:00'), 6);
//output: 1d 7h 55s
【讨论】: