DateInterval::__construct

(PHP 5 >= 5.3.0, PHP 7, PHP 8)

DateInterval::__constructСоздаёт новый объект DateInterval

Описание

publicDateInterval::__construct(string$duration)

Создаёт новый объект DateInterval.

Список параметров

duration

Описание интервала.

Формат описания интервала начинается с буквы P (от англ. period). Длительность периодов представляют целочисленным значением, за которым идёт обозначение периода. Перед частью описания с элементами времени указывают букву T.

Обозначения периодов duration
Обозначение периодаОписание
YГоды
MМесяцы
DДни
W Недели. Преобразовываются в дни. До PHP 8.0.0 нельзя было объединять с обозначением дней D.
HЧасы
MМинуты
SСекунды

Вот несколько простых примеров. Два дня — P2D. Две секунды — PT2S. Шесть лет и пять минут — P6YT5M.

Замечание:

Единицы измерения записывают от наибольшей величины слева к наименьшей величине справа. То есть годы идут перед месяцами, месяцы перед днями, дни перед минутами и т. д. Поэтому один год и четыре дня представляют как P1Y4D, но не P4D1Y.

Описание можно записать и в виде даты и времени. Пример одного года и четырёх дней можно описать как P0001-00-04T00:00:00. Но значения в этом формате не должны выходить за рамки допустимых значений даты и времени (например, 25 часов недопустимо).

Эти форматы основаны на » стандарте ISO 8601.

Ошибки

Метод выбросит исключение DateMalformedIntervalStringException, если не разберёт значение параметра duration как интервал. До PHP 8.3 метод выбрасывал исключение Exception.

Список изменений

ВерсияОписание
8.3.0 Теперь вместо исключения Exception выбрасывается исключение DateMalformedIntervalStringException.
8.2.0 Из свойств объекта интервала будут видны только y в f, invert и days, включая новое логическое свойство from_string.
8.0.0 Обозначение недель W теперь разрешено комбинировать с обозначением дней D.

Примеры

Пример #1 Пример создания и использования объектов DateInterval

<?php

// Создаём конкретную дату
$someDate = \DateTime::createFromFormat("Y-m-d H:i", "2022-08-25 14:18");

// Создаём интервал
$interval = new \DateInterval("P7D");

// Добавляем интервал
$someDate->add($interval);

// Преобразовываем интервал в строку
echo $interval->format("%d");

?>

Результат выполнения приведённого примера:


7

Пример #2 Пример использования объекта DateInterval

<?php

$interval
= new DateInterval('P1W2D');
var_dump($interval);

?>

Результат выполнения приведённого примера в PHP 8.2:

object(DateInterval)#1 (10) { ["y"]=> int(0) ["m"]=> int(0) ["d"]=> int(9) ["h"]=> int(0) ["i"]=> int(0) ["s"]=> int(0) ["f"]=> float(0) ["invert"]=> int(0) ["days"]=> bool(false) ["from_string"]=> bool(false) }

Результат выполнения приведённого примера в PHP 8:

object(DateInterval)#1 (16) { ["y"]=> int(0) ["m"]=> int(0) ["d"]=> int(9) ["h"]=> int(0) ["i"]=> int(0) ["s"]=> int(0) ["f"]=> float(0) ["weekday"]=> int(0) ["weekday_behavior"]=> int(0) ["first_last_day_of"]=> int(0) ["invert"]=> int(0) ["days"]=> bool(false) ["special_type"]=> int(0) ["special_amount"]=> int(0) ["have_weekday_relative"]=> int(0) ["have_special_relative"]=> int(0) }

Результат выполнения приведённого примера в PHP 7:

object(DateInterval)#1 (16) { ["y"]=> int(0) ["m"]=> int(0) ["d"]=> int(2) ["h"]=> int(0) ["i"]=> int(0) ["s"]=> int(0) ["f"]=> float(0) ["weekday"]=> int(0) ["weekday_behavior"]=> int(0) ["first_last_day_of"]=> int(0) ["invert"]=> int(0) ["days"]=> bool(false) ["special_type"]=> int(0) ["special_amount"]=> int(0) ["have_weekday_relative"]=> int(0) ["have_special_relative"]=> int(0) }

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

  • DateInterval::format() - Форматирует интервал
  • DateTime::add() - Изменяет объект DateTime, добавляя количество дней, месяцев, лет, часов, минут и секунд
  • DateTime::sub() - Вычитает дни, месяцы, годы, часы, минуты и секунды из объекта DateTime
  • DateTime::diff() - Возвращает разницу между двумя объектами DateTime
To Top