Клас 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,
који представља временску зону