Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- <?php
- ini_set('display_errors', TRUE);
- ini_set('display_startup_errors', TRUE);
- header('Content-type: text/html; charset=UTF-8');
- $onetime = 60;
- $sec = $onetime * 60;
- $date = '2017-09-20';
- $time = array(
- 1 => "08:00-20:00",
- 2 => "09:00-18:00 13:00-14:00",
- );
- $busy = ['09:00', '10:00'];
- // 1. Получаем запрошенную дату
- // 2. Узнаём какой это день недели
- // 3. Забираем из массива режим работы на этот день недели
- // 4. Забираем уже существующие записи на эту дату
- // 5. Строим список возможного времени для записи
- // Перерыв это та же запись, только он может быть не кратен времени 1 записи !!
- $breaks = count(explode(' ', $time[1]));
- var_dump($breaks);
- // Вариант, когда внутри дня нет перерывов и записей
- $start = explode('-', $time[1]);
- $DayStart = strtotime("$date ".$start[0]);
- $DayFinish = strtotime("$date ".$start[1]);
- $AllZap = ($DayFinish - $DayStart) / $sec;
- echo "<br><br>";
- echo "$AllZap<br><br>";
- $freeTime = [];
- for ($i = 0; $i < $AllZap; $i++) {
- $StartTime = $DayStart + ($i * $sec);
- $freeTime[] = date("H:i", $StartTime);
- }
- // Если не пустой массив записей, то удалим из массива время на которое уже есть записи (по времени начала смотрим)
- if(!empty($busy)){
- $result = array_intersect($freeTime, $busy);
- foreach ($result as $key => $value) {
- unset($freeTime[$key]);
- }
- }
- // Отсортируем что бы ключи снова пришли в порядок
- sort($freeTime);
- //Добавляем к элементам время окончания что бы нормально отображалось
- for ($i = 0; $i < count($freeTime); $i++) {
- $StartTime = $DayStart + ($i * $sec);
- $freeTime[$i] = $freeTime[$i].'-'.date("H:i", strtotime($freeTime[$i]) + $sec);
- }
- var_dump($freeTime);
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement