函数,该函数计算时间差,但只考虑PHP中的小时数

函数,该函数计算时间差,但只考虑PHP中的小时数,php,Php,我有一个日历,用户可以在其中保存事件。每个事件都有一个$start\u time和一个$end\u time。时间以HH:mm:ss格式保存。是否有一个函数可以计算两次之间的差异,但只考虑小时,而不是分和秒?例如,如果$start\u time=09.00.00和$end\u time=12.00.00则差异(start\u time,end\u time)应为3 您可以通过使用strotime()函数将字符串解析为数字格式来计算差异,然后计算时间增量,并使用date()将其解析回字符串表示形式

我有一个日历,用户可以在其中保存事件。每个事件都有一个
$start\u time
和一个
$end\u time
。时间以
HH:mm:ss
格式保存。是否有一个函数可以计算两次之间的差异,但只考虑小时,而不是分和秒?例如,如果
$start\u time=09.00.00
$end\u time=12.00.00
差异(start\u time,end\u time)
应为
3

您可以通过使用
strotime()
函数将字符串解析为数字格式来计算差异,然后计算时间增量,并使用
date()
将其解析回字符串表示形式,如下所示:

$delta = strtotime($end_time) - strtotime($start_time);
$timediff = date('H', $delta);
或者你可以去掉减法之前的秒和分钟,如下所示:

$end_time_hrs = date('H', strtotime($end_time));
$start_time_hrs = date('H', strtotime($start_time));
然后是区别:

$delta = strtotime($end_time_hrs) - strtotime($start_time_hrs);
$timediff = date('H', $delta);

DateTime
类有一个比较日期的方法-

$start = new DateTime('04:13:41');  // accepts the same formats as strtotime
$end = new DateTime('08:31:13');
$diff = $start->diff($end);         // pass 'true' as the second param for absolute
echo $diff->h;                      // 'h' contains the difference in hours

可能的重复我已经标记为重复,因为答案已经打开了。你需要做的唯一一件额外的事情就是将上述答案产生的小时数四舍五入为整数。你需要考虑夏令时的轮班吗?这两个时间是否总是保证在同一天?不可能有多日事件吗?在
date()
函数中添加了少量更正。希望这能得到你的认可。当然,谢谢!也为这个可耻的错误感到抱歉…谢谢你,这正是我要找的。