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

PHP计算营业时间内停机分钟数 超过24小时后数值从0重置问题

营业时段跨天停机时长计算问题修复

问题根源

代码核心计算逻辑没有问题,错误出在最终秒数转分钟的步骤:
gmdate('H', $downTime) 函数返回的小时数范围固定为0~23,当日长超过24小时时,会自动对24取模,比如25小时对应的秒数传入后只会返回1,自然就会出现超过24小时后计算结果重新计数的问题。

修复方案

直接将累计的总秒数除以60取整即可得到正确的总分钟数,不需要使用gmdate做日期格式化:

// 替换原来的 $downTime 转换代码即可
$downTime = intval($downTime / 60);

用你给出的测试用例验证:累计停机总秒数为1500*60=90000,除以60后直接得到1500,完全符合预期输出。

可选优化建议

现有代码里大量重复的营业时段计算逻辑可以抽成公共函数,减少冗余代码,也能降低后续维护的出错概率:比如可以写一个getBizTimeByDate($date, $bhStartTime, $bhEndTime) 函数,传入日期直接返回当日营业开始、结束的时间戳,不用每次重复写explode、setTime的逻辑。

内容的提问来源于stack exchange,提问作者Adam Fiqrie Putra

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.06 07:57:04