(PHP 5 >= 5.3.0, PHP 7, PHP 8)
DateInterval::__construct — Создаёт новый объект DateInterval
$duration
)Создаёт новый объект DateInterval.
duration
Описание интервала.
Формат описания интервала начинается с буквы P
.
Каждый период интервала представлен целым числом, за которым следует
указатель его типа. Возможные типы приведены в таблице.
Если интервал содержит периоды, обозначающие время, то их описанию должна
предшествовать буква T
.
Указатель периода | Описание |
---|---|
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.
Выбрасывает Exception, если duration
не может быть распознан в качестве интервала.
Версия | Описание |
---|---|
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");
Результат выполнения данного примера:
Пример #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) }