【发布时间】:2019-09-16 13:53:40
【问题描述】:
我想获取员工从晚上 10 点上班到早上 6 点上班的小时数。我已经搜索了一个代码来检查时间是否在两个时间之间:PHP Check if time is between two times regardless of date
我想查看员工的上班时间是否在晚上 10 点到早上 6 点之间,并返回晚上 10 点到下午 6 点之间的小时数。从链接中,我试过了,我返回了一个错误:Call to a member function modify() on boolean
这是我尝试过的代码,我想使用date_diff 函数来获取从晚上 10 点到早上 6 点的小时数。 $schedule->time_in 是我的员工的时间,在我的代码示例中,我的值是上午 4:00 从$schedule->time_in
这是我使用的链接中的函数并返回错误:
private function isBetween($from, $till, $input) {
$f = DateTime::createFromFormat('!H:i', $from);
$t = DateTime::createFromFormat('!H:i', $till);
$i = DateTime::createFromFormat('!H:i', $input);
if ($f > $t) $t->modify('+1 day');
return ($f <= $i && $i <= $t) || ($f <= $i->modify('+1 day') && $i <= $t);
}
我正在尝试像这样使用它来检查它会返回什么值:
$cola_in = "22:00";
$cola_out = "6:00";
print_r($this->isBetween($cola_in,$cola_out,$schedule->time_in));
我不想想出这样的东西:
$cola_in = "22:00";
$cola_out = "6:00";
$date1 = date("H:i",strtotime($schedule->time_in));
$date2 = date("H:i",strtotime($cola_in));
$date3 = date("H:i",strtotime($cola_out));
if ($date1 > $date2 && $date1 < $date3) {
$number_of_hours = $date1->diff($date3);
print_r($number_of_hours);
}
【问题讨论】:
-
如果我理解正确的话;如果有人在凌晨 4 点打卡,在早上 8 点打卡。那么你想让你的函数返回 2 吗?因为那是他们在晚上 10 点到早上 6 点之间的工作时间?
-
@DirkScholten 是的.. 就是这样
-
@DirkScholten 如果我晚上 10 点和早上 6 点出去,那么函数也应该返回 8。