📞 09318539889 📧 yxp@gansuwangzhan.cn

给定上下班时间,循环出上班时间段

作者:杨锦龙时间: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;
}