Я хочу создать временные интервалы со стартом, временем окончания и временем прерывания.
public function getServiceScheduleSlots($duration,$break, $stTime,$enTime) { $start = new DateTime($stTime); $end = new DateTime($enTime); $interval = new DateInterval("PT" . $duration. "M"); $period = new DatePeriod($start, $duration, $end); foreach ($period as $dt) { $periods[] = $dt->format('H:iA'); } return $periods; }
Например,
Время начала моей службы 10:00 , время окончания 12:00 PM .
Условие: каждое время обслуживания 30 минут и 15 минут .
Выше метод возвращает, например,
Ожидаемые результаты,
Я хочу добавить время разрыва, когда начинается каждый период.
Заранее спасибо.
Как насчет этого….
function getServiceScheduleSlots($duration,$break, $stTime,$enTime) { $start = new DateTime($stTime); $end = new DateTime($enTime); $interval = new DateInterval("PT" . $duration. "M"); $breakInterval = new DateInterval("PT" . $break. "M"); for ($intStart = $start; $intStart < $end; $intStart->add($interval)->add($breakInterval)) { $endPeriod = clone $intStart; $endPeriod->add($interval); if ($endPeriod > $end) { $endPeriod=$end; } $periods[] = $intStart->format('H:iA') . ' - ' . $endPeriod->format('H:iA'); } return $periods; }