PHP实现:计算两个时间戳区间内员工周日工作分钟数
统计员工上下班时间戳内周日工作总分钟数的PHP实现
我需要通过两个代表员工上下班时间的时间戳,计算这段区间内员工在周日工作的总分钟数,以下是实现的PHP函数:
function get_sunday_hours_from_timestamps($startTimestamp, $endTimestamp) { $start = new DateTime(); $start->setTimestamp($startTimestamp); $end = new DateTime(); $end->setTimestamp($endTimestamp); $workedMinutes = 0; $current = clone $start; while ($current <= $end) { $next = clone $current; $next->modify('next day'); if ($current->format('w') == 0) { $dayStart = ($current < $start) ? $start : $current; $dayEnd = ($next > $end) ? $end : $next; $diff = $dayEnd->diff($dayStart); $minutes = $diff->days * 1440 + $diff->h * 60 + $diff->i; $workedMinutes += $minutes; } $current = $next; } return $workedMinutes / 60; // return $workedMinutes; }
代码逻辑说明
- 将输入的时间戳转换为
DateTime对象,方便进行日期时间的遍历与计算 - 从员工上班时间开始,逐天遍历至下班时间
- 通过
format('w') == 0判断当天是否为周日(w格式符返回0代表周日,1-6对应周一至周六) - 针对周日计算实际工作时长:
- 若当天起始时间早于员工上班时间,以上班时间作为该周日的工作起始点
- 若次日起始时间晚于员工下班时间,以下班时间作为该周日的工作结束点
- 利用
diff()方法计算时间段差值,转换为分钟数后累加统计 - 函数默认返回总工作小时数,注释的语句可直接返回总分钟数
内容的提问来源于stack exchange,提问作者eljulio
相关产品推荐
相关产品推荐

