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

PHP如何计算两个时间变量的小时差值?

PHP计算两个时间字符串的小时差值

嘿,这个需求挺常见的,用PHP处理起来很简单,我给你两种靠谱的实现方式,按需选就行:

方法一:用DateTime类(推荐)

DateTime是PHP官方推荐的日期时间处理工具,兼容性好(PHP5.2+支持),还能轻松处理跨天的情况,代码也清晰:

$from = '08:00:00';
$to = '10:00:00';

// 初始化两个时间对象
$startTime = new DateTime($from);
$endTime = new DateTime($to);

// 计算时间差
$timeDiff = $startTime->diff($endTime);

// 直接获取小时差值
$hours = $timeDiff->h;

echo $hours; // 输出:2

要是你的时间跨天了(比如$from = '22:00:00',$to = '02:00:00'),这个方法也能自动算出正确的4小时,还能通过$timeDiff->i获取分钟差、$timeDiff->s获取秒差,非常灵活。

方法二:时间戳转换计算

如果喜欢更简洁的写法,也可以把时间转成时间戳(秒数),再计算差值后转成小时:

$from = '08:00:00';
$to = '10:00:00';

// 把时间字符串转成时间戳
$startStamp = strtotime($from);
$endStamp = strtotime($to);

// 计算秒数差,再除以3600转成小时
$hours = ($endStamp - $startStamp) / 3600;

echo $hours; // 输出:2

这个方法对同一天的时间完全没问题,跨天的情况也能正确计算,因为strtotime会自动给你的时分秒补全当前日期,时间戳的差值依然准确。

小提醒

如果你的时间格式不是标准的H:i:s(比如是08-00-00这种自定义格式),记得用DateTime::createFromFormat来指定格式,避免解析错误:

$startTime = DateTime::createFromFormat('H-i-s', '08-00-00');

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.26 09:20:31