Intereting Posts
Возвращает ли «-1» с usort действительно перемещать переменную $ b или сохраняет ее в одном месте? Есть ли какая-либо встроенная функция PHP, которая генерирует встроенное исключение? Запуск нескольких cURL в фоновом режиме с помощью PHP Как отображать данные из mysql с помощью angular.js PHP? Преобразование PHP-класса в модуль apache Symfony Controller не может получить доступ к контейнеру BadMethodCallException с сообщением «Вызов неопределенного метода Illuminate \ Database \ Query \ Builder :: belongsToMany () ' Как поместить окно предупреждения с помощью PHP? как отправлять электронные письма по нескольким адресам с помощью phpmailer Как установить разрешения по умолчанию для новых файлов, созданных с помощью php Как я могу реализовать commit / rollback для MySQL в PHP? Доступ к данным JSON в переменной Javascript SQLSTATE : ошибка синтаксиса или нарушение доступа – подготовленный отчет PDO «GRANT» почему pdo-> lastInsertId () возвращает 0, когда я вызываю STORED PROCEDURE в mysql? Как использовать мои сущности и сущности в команде Symfony 2 Console?

PHP Создание таймслотов с временным отключением с использованием DatePeriod

Я хочу создать временные интервалы со стартом, временем окончания и временем прерывания.

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 минут .

Выше метод возвращает, например,

  • 10:00 – 10:30
  • 10:30 – 11:00
  • 11:00 – 11:30
  • 11:30 – 12:00

Ожидаемые результаты,

  • 10:00 – 10:30
  • 10:45 – 11:15
  • 11:30 – 12:00

Я хочу добавить время разрыва, когда начинается каждый период.

Заранее спасибо.

Как насчет этого….

 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; }