ВНИМАНИЕ: Запись на курсы по HTML, CSS, JavaScript, PHP, Python, React, Vue, Laravel и другим фреймворкам и CMS,
а также: помощь в поиске работы и заказов, стажировка на реальных проектах→
227 of 410 menu
Новый формат обучения! Репетиторство по программированию. Есть еще 3 свободных места! Жми для подробностей.

Класс DateInterval

Класс DateInterval позволяет работать с временными интервалами в PHP. Он используется для хранения разницы между двумя датами или для задания интервала в методах работы с датами. Интервал создается в специальном формате.

Синтаксис

DateInterval::__construct(string $duration)

Формат интервала

Формат состоит из буквы P (period) и элементов:

P{y}Y{m}M{d}DT{h}H{m}M{s}S{w}W

В этом формате: Y - годы, M - месяцы, D - дни, T - разделитель времени, H - часы, M - минуты, S - секунды, W - недели.

Перед этими буквами нужно писать соответствующее значение. Например, 3Y будет означать три года, а 5Y2M будет обозначать 5 лет и 2 месяца.

После создания объект DateInterval будет содержать следующие свойства:

<?php $interval->y // годы $interval->m // месяцы $interval->d // дни $interval->h // часы $interval->i // минуты $interval->s // секунды $interval->f // микросекунды $interval->invert // 1 если интервал отрицательный $interval->days // количество дней (если создано через diff()) ?>

Давайте посмотрим работу интервала на примерах:

Пример

Создадим интервал в 1 час, 45 минут и 30 секунд:

<?php $interval = new DateInterval('PT1H45M30S'); var_dump($interval); ?>

Результат выполнения кода:

DateInterval Object ( 'y' => 0 'm' => 0 'd' => 0 'h' => 1 'i' => 45 's' => 30 )

Пример

Создадим интервал в 3 недели и 2 дня:

<?php $interval = new DateInterval('P3W2D'); var_dump($interval); ?>

Результат выполнения кода:

DateInterval Object ( 'y' => 0 'm' => 0 'd' => 23 'h' => 0 'i' => 0 's' => 0 )

Пример

Создадим интервал в 5 месяцев, 10 дней и 6 часов:

<?php $interval = new DateInterval('P5M10DT6H'); var_dump($interval); ?>

Результат выполнения кода:

DateInterval Object ( 'y' => 0 'm' => 5 'd' => 10 'h' => 6 'i' => 0 's' => 0 )

Пример

Создадим интервал в 2 года и 15 минут:

<?php $interval = new DateInterval('P2YT15M'); var_dump($interval); ?>

Результат выполнения кода:

DateInterval Object ( 'y' => 2 'm' => 0 'd' => 0 'h' => 0 'i' => 15 's' => 0 )

Пример

Создадим интервал в 1 день, 12 часов и 30 секунд:

<?php $interval = new DateInterval('P1DT12H30S'); var_dump($interval); ?>

Результат выполнения кода:

DateInterval Object ( 'y' => 0 'm' => 0 'd' => 1 'h' => 12 'i' => 0 's' => 30 )

Пример

Создадим отрицательный интервал в 1 год и 3 месяца (интервал назад):

<?php $interval = new DateInterval('P1Y3M'); $interval->invert = 1; var_dump($interval); ?>

Результат выполнения кода:

DateInterval Object ( 'y' => 1 'm' => 3 'd' => 0 'h' => 0 'i' => 0 's' => 0 'invert' => 1 )

Пример

Создадим отрицательный интервал в 2 часа, 30 минут (интервал назад):

<?php $interval = new DateInterval('PT2H30M'); $interval->invert = 1; var_dump($interval); ?>

Результат выполнения кода:

DateInterval Object ( 'y' => 0 'm' => 0 'd' => 0 'h' => 2 'i' => 30 's' => 0 'invert' => 1 )

Пример

Добавим интервал к текущей дате:

<?php $date = new DateTime('2023-01-01'); $interval = new DateInterval('P10D'); $date->add($interval); echo $date->format('Y-m-d'); ?>

Результат выполнения кода:

'2023-01-11'

Пример

Вычислим разницу между двумя датами:

<?php $date1 = new DateTime('2023-01-01'); $date2 = new DateTime('2023-02-15'); $interval = $date1->diff($date2); echo $interval->format('%m months %d days'); ?>

Результат выполнения кода:

'1 months 14 days'

Смотрите также

  • класс DateTime,
    который представляет дату и время
  • класс DateTimeZone,
    который представляет временную зону
byenru