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

PHP中如何将时长与已有日期时间(datetime)相加?

解决PHP中日期时间加时长的问题

嘿,我来帮你搞定这个时间相加的问题~你之前尝试的代码有个小问题:strtotime($hours)会把02:25:10解析成当天的这个具体时间点的时间戳,而不是你需要的“2小时25分10秒”的时长秒数,所以直接相加肯定得不到正确结果。

下面给你两种可靠的实现方式:

方法一:用DateTime + DateInterval(推荐)

这是PHP处理时间操作最规范、最健壮的方式,能自动处理跨天、跨月甚至闰年等边界情况,代码可读性也高:

<?php
$dateStr = '2018-03-26 11:20:35';
$durationStr = '02:25:10';

// 将原始日期转为DateTime对象
$date = new DateTime($dateStr);

// 将时长字符串转为DateInterval对象
// 这里用createFromFormat适配你的"H:i:s"格式
$duration = DateInterval::createFromFormat('H:i:s', $durationStr);

// 给日期加上时长
$date->add($duration);

// 输出格式化后的结果
echo $date->format('Y-m-d H:i:s'); // 输出:2018-03-26 13:45:45
?>

方法二:手动转换时长为秒数后相加

如果你喜欢更直观的数值计算方式,可以把时长拆成小时、分钟、秒,计算总秒数后和日期的时间戳相加:

<?php
$dateStr = '2018-03-26 11:20:35';
$durationStr = '02:25:10';

// 把日期转为时间戳
$dateTimestamp = strtotime($dateStr);

// 拆分时长字符串,计算总秒数
list($hours, $minutes, $seconds) = explode(':', $durationStr);
$totalDurationSeconds = $hours * 3600 + $minutes * 60 + $seconds;

// 相加后转回日期格式
$newTimestamp = $dateTimestamp + $totalDurationSeconds;
echo date('Y-m-d H:i:s', $newTimestamp); // 同样输出:2018-03-26 13:45:45
?>

两种方法都能得到你想要的结果,个人更推荐第一种,因为它对复杂时间场景的兼容性更好,后续如果时长格式扩展(比如加上天数),调整起来也更方便。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.21 07:39:44