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