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

PHP中如何实现时长除法?新手求助:将2:00除以2得1:00(h:i格式)

在PHP中实现时长除以2并保持h:i格式的方法

嘿,我明白你折腾这个问题好久了——把像2:00这样的时长除以2还保持h:i格式确实有点绕,尤其是刚接触PHP的时候。别担心,我给你两个靠谱的实现方案,都能轻松搞定需求:

方法一:直观的字符串拆分计算法

这个方法逻辑简单,容易理解,适合新手快速上手:

// 你的原始时长
$duration = '2:00';

// 拆分小时和分钟部分
list($hours, $minutes) = explode(':', $duration);

// 把时长转换成总分钟数,方便计算
$totalMinutes = $hours * 60 + $minutes;

// 执行除法操作
$newTotalMinutes = $totalMinutes / 2;

// 把计算后的总分钟数转回小时和分钟
$newHours = floor($newTotalMinutes / 60);
$newMinutes = $newTotalMinutes % 60;

// 格式化输出,确保分钟始终是两位数(比如0:45而不是0:45)
$result = sprintf('%d:%02d', $newHours, $newMinutes);

echo $result; // 输出:1:00

为什么这么做?

  • 先把小时转成分钟,统一单位后计算更不容易出错
  • sprintf('%02d')能保证分钟数始终是两位数,就算结果是0:05也不会变成0:5,严格符合h:i格式要求

方法二:面向对象的DateInterval处理法

如果你想更贴合PHP的面向对象特性,用DateInterval类来处理时长会更优雅:

$duration = '2:00';

// 拆分时长,转成DateInterval能识别的格式
list($h, $i) = explode(':', $duration);
$interval = new DateInterval("PT{$h}H{$i}M");

// 把时长转换成总秒数
$totalSeconds = $interval->h * 3600 + $interval->i * 60 + $interval->s;

// 执行除法
$newTotalSeconds = $totalSeconds / 2;

// 把新的秒数转回DateInterval
$newInterval = new DateInterval("PT{$newTotalSeconds}S");

// 格式化输出
$result = sprintf('%d:%02d', $newInterval->h, $newInterval->i);

echo $result; // 输出:1:00

适用场景

这个方法更适合后续有复杂时间操作的场景(比如加减多个时长),如果只是简单的除法,两种方法效果一样。

边界情况测试

比如你输入1:30,两种方法都会输出0:45;输入3:10会输出1:35,完全符合预期。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.25 07:57:49