You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Laravel时间计算问题求助:给定时间数组计算无法正常运行

在Laravel中计算时间数组的总和

嘿,我来帮你搞定这个时间总和的计算问题!针对你给出的$array = [ '00:09:45', '00:50:05', '00:01:05', ]这个时间数组,我有两个实用的方法在Laravel里实现,咱们一步步看:

方法一:用Laravel自带的Carbon类(推荐)

Laravel默认集成了Carbon,用它的CarbonInterval类处理时长累加非常顺手,代码也更优雅:

use Carbon\CarbonInterval;

$array = [ '00:09:45', '00:50:05', '00:01:05', ];

// 初始化一个空的时长对象
$totalDuration = CarbonInterval::zero();

foreach ($array as $timeStr) {
    // 将每个时间字符串转换为CarbonInterval实例
    $singleDuration = CarbonInterval::createFromFormat('H:i:s', $timeStr);
    // 累加到总时长里
    $totalDuration->add($singleDuration);
}

// 格式化为H:i:s的字符串输出
$totalTime = $totalDuration->format('%H:%I:%S');

// 最终输出:01:00:55
echo $totalTime;

这里要注意,CarbonInterval的格式化参数和原生PHP有点区别,%H代表小时,%I是带前导零的分钟,%S是带前导零的秒,这样输出的格式就和你输入的一致啦。

方法二:原生PHP实现(无依赖)

如果不想用Carbon,直接用原生PHP也能轻松搞定,思路是把所有时间转成秒数累加,再转回到时分秒格式:

$array = [ '00:09:45', '00:50:05', '00:01:05', ];

$totalSeconds = 0;

foreach ($array as $timeStr) {
    // 拆分出时、分、秒
    list($hours, $minutes, $seconds) = explode(':', $timeStr);
    // 转换为总秒数并累加
    $totalSeconds += $hours * 3600 + $minutes * 60 + $seconds;
}

// 把总秒数转回时分秒
$hours = floor($totalSeconds / 3600);
$minutes = floor(($totalSeconds % 3600) / 60);
$seconds = $totalSeconds % 60;

// 用sprintf确保每个部分都是两位数
$totalTime = sprintf('%02d:%02d:%02d', $hours, $minutes, $seconds);

// 同样输出:01:00:55
echo $totalTime;

这两种方法都能完美解决你的问题,选哪种就看你项目的习惯啦~

内容的提问来源于stack exchange,提问作者Lahiru Prabodha

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.04 10:22:54