DateInterval::__construct Создаёт новый объект DateInterval &reftitle.description; public DateInterval::__construct stringduration Создаёт новый объект DateInterval. &reftitle.parameters; duration Описание интервала. Формат описания интервала начинается с буквы P (от англ. period). Длительность периодов представляют целочисленным значением, за которым идёт обозначение периода. Перед частью описания с элементами времени указывают букву T. Обозначения периодов <parameter>duration</parameter> Обозначение периода Описание 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.
&reftitle.errors; Метод выбросит исключение DateMalformedIntervalStringException, если не разберёт значение параметра duration как интервал. До PHP 8.3 метод выбрасывал исключение Exception. &reftitle.changelog; &Version; &Description; 8.3.0 Теперь вместо исключения Exception выбрасывается исключение DateMalformedIntervalStringException. 8.2.0 Из свойств объекта интервала будут видны только y в f, invert и days, включая новое логическое свойство from_string. 8.0.0 Обозначение недель W теперь разрешено комбинировать с обозначением дней D. &reftitle.examples; Пример создания и использования объектов <classname>DateInterval</classname> add($interval); // Преобразовываем интервал в строку echo $interval->format("%d"); ]]> &example.outputs; Пример использования объекта <classname>DateInterval</classname> &example.outputs.82; 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) } ]]> &example.outputs.8; 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) } ]]> &example.outputs.7; 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) } ]]> &reftitle.seealso; DateInterval::format DateTime::add DateTime::sub DateTime::diff