Чтобы определить интервал в расписании на PHP, нужно выполнить несколько шагов.
1. Получите начальную и конечную даты, а также начальное и конечное время.
2. Преобразуйте эти значения в объекты типа DateTime, используя функцию DateTime::createFromFormat().
3. Вычислите разницу между начальной и конечной датой, используя метод diff() объекта типа DateTime.
4. Получите общее количество дней между начальной и конечной датой.
5. Зная общее количество дней и количество дней в неделе, вычислите количество недель в этом интервале.
6. Обозначьте первый день и последний день недели, с которых начинается и заканчивается этот интервал, вычислив это с помощью DateTime::format().
7. Учитывая начальное и конечное время, вычислите общее количество часов и минут в этом интервале.
8. Объедините все полученные значения, чтобы определить интервал в расписании.
Приведенный ниже код демонстрирует, как реализовать эти шаги:
// Получить начальные и конечные даты и время $start_date = '2022-01-01'; $end_date = '2022-01-31'; $start_time = '09:00'; $end_time = '18:00'; // Создать объекты DateTime $start_datetime = DateTime::createFromFormat('Y-m-d H:i', $start_date . ' ' . $start_time); $end_datetime = DateTime::createFromFormat('Y-m-d H:i', $end_date . ' ' . $end_time); // Вычислить разницу между начальной и конечной датами $interval = $start_datetime->diff($end_datetime); // Получить общее количество дней между начальной и конечной датой $total_days = $interval->days; // Получить количество недель в интервале $num_weeks = floor($total_days / 7); // Определить первый и последний дни недели $start_day_of_week = $start_datetime->format('l'); $end_day_of_week = $end_datetime->format('l'); // Определить общее количество рабочих часов в интервале $total_hours = $interval->h; // Определить общее количество рабочих минут в интервале $total_minutes = $total_hours * 60 + $interval->i; // Вывести результат echo "В расписании есть {$num_weeks} недель.n"; echo "Начало интервала: {$start_day_of_week}, {$start_time}.n"; echo "Конец интервала: {$end_day_of_week}, {$end_time}.n"; echo "Всего рабочих часов в интервале: {$total_hours}.n"; echo "Всего рабочих минут в интервале: {$total_minutes}.n";
Этот код поможет вам определить интервал в расписании в днях, неделях, часах и минутах, начиная от указанных дат и времени.