Php 从重叠时间计算小时数的最短逻辑

Php 从重叠时间计算小时数的最短逻辑,php,Php,我正在尝试计算用户的小时数。如果给他分配了很多时间表 时间表是- 10:00 AM - 12 pm 11 am - 12 pm 9 am - 12 pm 8 am - 5 pm 这些计划将分配给用户。 我必须计算出他在这些日程安排上花费了多少时间 有没有最短的计算方法 我想要答案=8小时。我不想计算小时数的差值 不,我要结果。。我解释原因 上午10:00-下午12:00--2小时, 上午11点到下午12点——已经增加了1小时, 上午9点到下午12点------3小时,但10点到12点已经增加了

我正在尝试计算用户的小时数。如果给他分配了很多时间表

时间表是-

10:00 AM - 12 pm
11 am - 12 pm
9 am - 12 pm
8 am - 5 pm
这些计划将分配给用户。 我必须计算出他在这些日程安排上花费了多少时间

有没有最短的计算方法


我想要答案=8小时。我不想计算小时数的差值

不,我要结果。。我解释原因
上午10:00-下午12:00--2小时, 上午11点到下午12点——已经增加了1小时, 上午9点到下午12点------3小时,但10点到12点已经增加了1小时, 上午8点到下午5点--8小时

使用以下方法:

$minutes_diff = round(abs(strtotime($time1) - strtotime($time2)) / 60);
或者这个:

$time1="7.30 AM";
$time2="8.30 PM";

$d1=  strtotime($time1);
$d2=  strtotime($time2);

$diff=$d2-$d1;

//Print the difference in hours : minutes
echo date("H:i",$diff);

我编写此脚本是为了将工作日程中从工作日开始到结束的总小时数相加:

// $key['date'] contains a date format of 'yyyy-mm-dd'
// $key['start'] and $key['end'] contains a time of format hh:mm:ss             
$start = new DateTime( $key['date'] .'T' . $key['start'] );
$end = new DateTime( $key['date'] .'T' . $key['end'] );

// difference returns the differential between start and end resulting in number of hours worked
$difference = $start->diff( $end );

// Additionally, I would like 1 hour and 15 minutes to result in 1.25 instead of 1.15 and so on. For this I used this:
$minute = $difference->format( '%i' )*1.666666666667;
$total = $difference->format( '%h' ) . '.' . $minute;

将时间转换为24小时格式并计算差异。那么您想使用整个字符串计算总时间吗<代码>$time='10:00 AM-12 pm 11 AM-12 pm 9 AM-12 pm 8 AM-5 pm'?答案不应该是9小时吗?8-5是最长的时间间隔我想要的答案=8小时。我不想计算我想要的小时数的差异。@NidhiSen差异是用户花在上面的小时数?@NidhiSen你是怎么得到8的?@Ghost他把所有的差异加在一起。@Ghost不,等等,即使不是8我也不明白,请详细说明你可以这样简化:$start=new DateTime('2014-09-17T10:00:00')$结束=新的日期时间('2014-09-17T14:00:00')$差异=$start->diff($end)$总计=$difference->格式(“%h”);echo$total//这将导致“4”,这是上午10点到下午2点之间的总小时数