Как определить интервал в расписание на php?

Чтобы определить интервал в расписании на 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";

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