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

PHP与Laravel中如何将时间间隔除以整数

解决PHP/Laravel中时间间隔除以整数的问题

我来帮你搞定这个需求!你已经通过查询拿到了总时长的字符串格式(00:08:18),要实现时间间隔和整数的完整除法,有两种常用方案,我都给你列出来:

方案一:在数据库查询阶段直接处理(更高效)

如果不需要在PHP里对总时长做其他操作,直接在SQL层面完成除法是最优选择,能减少PHP和数据库之间的数据传输:

$vidDuration = Video::selectRaw('SEC_TO_TIME(SUM(TIME_TO_SEC(duration)) / 2) AS total')
    ->whereIn('id', [3,4,5])
    ->pluck('total')
    ->toArray();

// 结果直接就是 Array ( [0] => 00:04:09 )

原理很清晰:先用TIME_TO_SEC(duration)把每条视频的时长转成秒数,求和后除以2,最后再用SEC_TO_TIME()把结果转回时分秒格式。

方案二:在PHP/Laravel中处理(更灵活)

如果需要先拿到总时长做其他逻辑再执行除法,可以用原生PHP或者Laravel自带的Carbon类来实现:

原生PHP实现

// 获取数据库返回的时间字符串
$totalTime = $vidDuration[0]; // 即 '00:08:18'

// 拆分时分秒
list($hours, $minutes, $seconds) = explode(':', $totalTime);

// 计算总秒数
$totalSeconds = $hours * 3600 + $minutes * 60 + $seconds;

// 除以整数(这里是2)
$dividedSeconds = $totalSeconds / 2;

// 把秒数转回时分秒格式
$dividedTime = gmdate('H:i:s', $dividedSeconds);

// 最终结果:$dividedTime = '00:04:09'

用Laravel Carbon类实现(更优雅)

Carbon是Laravel内置的日期处理工具,用它处理时间会更简洁直观:

use Carbon\Carbon;

$totalTime = $vidDuration[0];

// 把时间字符串转成总秒数
$totalSeconds = Carbon::parse($totalTime)->diffInSeconds(Carbon::parse('00:00:00'));

// 除以整数
$dividedSeconds = $totalSeconds / 2;

// 把秒数转回时分秒格式
$dividedTime = Carbon::parse('00:00:00')->addSeconds($dividedSeconds)->format('H:i:s');

// 结果同样是 '00:04:09'

这两种方案都能完美实现你要的时间与整数的完整除法,你可以根据自己的业务场景选择合适的方式~

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.06 13:38:16