modify('+1 minute'); $date2 = $datetime_stop->format('Y-m-d H:i'); $time_stop = $datetime_stop->getTimestamp(); // Устанавливаем начальную дату в зависимости от сдвига $datetime_start = clone $datetime_stop; switch ($date_shift) { case 'h': $datetime_start->modify('-1 hour'); break; case '8h': $datetime_start->modify('-8 hours'); break; case 'd': $datetime_start->modify('-1 day'); break; case 'm': $datetime_start->modify('-1 month'); break; case '-': default: $datetime_start->modify('-1 day'); // значение по умолчанию break; } $time_start = $datetime_start->getTimestamp(); $date1 = $datetime_start->format('Y-m-d H:i'); } else { // Если даты переданы, парсим их $datetime_start = GetDateTimeFromString($date_start); if ($datetime_start) { $date1 = $datetime_start->format('Y-m-d H:i'); $time_start = $datetime_start->getTimestamp(); } $datetime_stop = GetDateTimeFromString($date_stop); if ($datetime_stop) { $date2 = $datetime_stop->format('Y-m-d H:i'); $time_stop = $datetime_stop->getTimestamp(); } } // Защита от невалидных дат if (!$datetime_start || !$datetime_stop) { // Устанавливаем значения по умолчанию при ошибке $datetime_stop = (new DateTime())->modify('+1 minute'); $datetime_start = clone $datetime_stop; $datetime_start->modify('-1 day'); $date1 = $datetime_start->format('Y-m-d H:i'); $date2 = $datetime_stop->format('Y-m-d H:i'); $time_start = $datetime_start->getTimestamp(); $time_stop = $datetime_stop->getTimestamp(); } // Проверяем что начальная дата не позже конечной if ($time_start > $time_stop) { // Меняем даты местами если нужно list($time_start, $time_stop) = [$time_stop, $time_start]; list($date1, $date2) = [$date2, $date1]; list($datetime_start, $datetime_stop) = [$datetime_stop, $datetime_start]; } $days_shift = ceil(($time_stop - $time_start) / 86400); // Сохраняем в сессии $_SESSION[$page_url]['date_start'] = $date1; $_SESSION[$page_url]['date_stop'] = $date2; $_SESSION[$page_url]['date_shift'] = $date_shift; ?>