PHP计算8小时工作日的一半

时间:2015-10-29 08:53:27

标签: php mysql moodle

我们有Moodle plugin,我们在其中添加了每个员工的travel time。 到目前为止,我们在days计算了旅行时间的持续时间,因为我们仅以timepickup - 21.10.2105 timereturn - 2015年10月23日的形式为每位员工添加了数据。

这里的数据正在添加数据:

$user->timepickup = gmdate("Y-m-d H:i", $timepickup);
$user->timereturn = gmdate("Y-m-d H:i", $timereturn);

这里计算旅行时间:

$datetime1 = strtotime($employee->timepickup);
$datetime2 = strtotime($employee->timereturn);
$interval = $datetime2 - $datetime1;

正如您所看到的,我们添加了导入exact time hoursminutes以及timepickup的{​​{1}}的选项。

如何计算旅行时间并将其显示在timereturndays中(我们假设half days half day来自4 hours个工作日。

因此,添加8 hour - 1 day(s) timepickup - 21.10.2105 08:00而不是旅行时间timereturn,我们会显示23.10.2015 12:00

1 个答案:

答案 0 :(得分:2)

这样的事情可以起作用

$pickup = strtotime($employee->timepickup);
$return = strtotime($employee->timereturn);
$timediff = ($return - $pickup) / 3600;

$days = floor($timediff / 8);
$halfday = ($timediff - $days * 8) / 4.5;

$days += $halfday < 1 ? 0.5: 1;

它有点粗糙,但如果剩余的时差为4.5小时或更短,你最终会增加半天,如果余数大于4.5则增加一整天。