Класс 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
,
который представляет временную зону