DateInterval::__constructСоздаёт новый объект DateInterval
&reftitle.description;
publicDateInterval::__constructstringduration
Создаёт новый объект DateInterval.
&reftitle.parameters;
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.
&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;
Пример создания и использования объектов DateInterval
add($interval);
// Преобразовываем интервал в строку
echo $interval->format("%d");
]]>
&example.outputs;
Пример использования объекта DateInterval
&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::formatDateTime::addDateTime::subDateTime::diff