4

我只使用时间计算夜班时间表的时差

假设我有这些数据:

 $actual_in_time      = 6:45 PM        //date July 30, 2013
 $actual_out_timeout  = 7:00 AM        //date July 31, 2013

我必须计算时间应转换为整个时间的时间差,因此

 $actual_in_time     = //(some code to convert 6:45 PM to 7:00 PM)
 $converted_in_time  = $actual_in_time;

现在这是我的代码:

 $actual_out_time   += 86400;
 $getInterval   = $actual_out_time - $converted_in_time;
 $hours     = round($getInterval/60/60, 2, PHP_ROUND_HALF_DOWN);
 $hours     = floor($hours);

我没有得到我想要的结果。您如何计算以时间为基础的时差?

4

2 回答 2

1

使用DateTime对象

$start =  new DateTime('2000-01-01 6:45 PM');
$end =  new DateTime('2000-01-01 7:00 AM');
if ($end<$start)$end->add(new DateInterval('P1D'));
$diff = date_diff($start,$end);
echo $diff->format('%h hours %i minutes');

如果您的结束时间小于开始时间,则添加 1 天。

于 2013-07-31T08:40:05.960 回答
0

您可以使用 strtotime 中的第二个参数来获取相对时间。

$start = strtotime($startTime);
$end = strtotime($endTime, $start);

echo ($end-$start)/3600;
于 2013-07-31T08:24:27.450 回答