给定上下班时间,循环出上班时间段
作者:杨锦龙时间:2026-01-19点击量:0次
public function generateTimeSlots($startTime = '09:30', $endTime = '18:00', $breakStart = '12:00', $breakEnd = '13:00', $interval = 30) {
$start = strtotime($startTime);
$end = strtotime($endTime);
$breakStartTimestamp = strtotime($breakStart);
$breakEndTimestamp = strtotime($breakEnd);
$timeSlots = [];
while ($start < $end) {
if ($start >= $breakStartTimestamp && $start < $breakEndTimestamp) {
// Skip the break time
$start = strtotime('+' . $interval . ' minutes', $breakEndTimestamp);
continue;
}
$endTimeSlot = strtotime('+' . $interval . ' minutes', $start);
if ($endTimeSlot > $breakStartTimestamp && $start < $breakStartTimestamp) {
// If the slot crosses the break, adjust the start time to just before the break
$timeSlots[] = date('H:i', $start) . ' - ' . date('H:i', $breakStartTimestamp);
$start = $breakEndTimestamp; // Move start time to after the break
continue;
}
if ($endTimeSlot > $end) {
// If the end of the slot is past working hours, stop.
$timeSlots[] = date('H:i', $start) . ' - ' . date('H:i', $end);
break;
}
$timeSlots[] = date('H:i', $start) . ' - ' . date('H:i', $endTimeSlot);
$start = $endTimeSlot;
}
return $timeSlots;
}