Trieda DateInterval
Trieda DateInterval umožňuje pracovať s časovými intervalmi v PHP.
Používa sa na uchovávanie rozdielu medzi dvoma dátumami alebo na nastavenie intervalu
v metódach práce s dátumami. Interval sa vytvára v špeciálnom formáte.
Syntax
DateInterval::__construct(string $duration)
Formát intervalu
Formát pozostáva z písmena P (period)
a prvkov:
P{y}Y{m}M{d}DT{h}H{m}M{s}S{w}W
V tomto formáte: Y - roky, M - mesiace,
D - dni, T - oddeľovač času,
H - hodiny, M - minúty, S - sekundy,
W - týždne.
Pred týmito písmenami je potrebné písať príslušnú
hodnotu. Napríklad, 3Y bude znamenať
tri roky, a 5Y2M bude označovať
5 rokov a 2 mesiace.
Po vytvorení bude objekt DateInterval
obsahovať nasledujúce vlastnosti:
<?php
$interval->y // roky
$interval->m // mesiace
$interval->d // dni
$interval->h // hodiny
$interval->i // minúty
$interval->s // sekundy
$interval->f // mikrosekundy
$interval->invert // 1 ak je interval záporný
$interval->days // počet dní (ak vytvorené cez diff())
?>
Pozrime sa na prácu intervalu na príkladoch:
Príklad
Vytvorme interval 1 hodina, 45 minút a 30 sekúnd:
<?php
$interval = new DateInterval('PT1H45M30S');
var_dump($interval);
?>
Výsledok vykonania kódu:
DateInterval Object
(
'y' => 0
'm' => 0
'd' => 0
'h' => 1
'i' => 45
's' => 30
)
Príklad
Vytvorme interval 3 týždne a 2 dni:
<?php
$interval = new DateInterval('P3W2D');
var_dump($interval);
?>
Výsledok vykonania kódu:
DateInterval Object
(
'y' => 0
'm' => 0
'd' => 23
'h' => 0
'i' => 0
's' => 0
)
Príklad
Vytvorme interval 5 mesiacov, 10 dní a 6 hodín:
<?php
$interval = new DateInterval('P5M10DT6H');
var_dump($interval);
?>
Výsledok vykonania kódu:
DateInterval Object
(
'y' => 0
'm' => 5
'd' => 10
'h' => 6
'i' => 0
's' => 0
)
Príklad
Vytvorme interval 2 roky a 15 minút:
<?php
$interval = new DateInterval('P2YT15M');
var_dump($interval);
?>
Výsledok vykonania kódu:
DateInterval Object
(
'y' => 2
'm' => 0
'd' => 0
'h' => 0
'i' => 15
's' => 0
)
Príklad
Vytvorme interval 1 deň, 12 hodín a 30 sekúnd:
<?php
$interval = new DateInterval('P1DT12H30S');
var_dump($interval);
?>
Výsledok vykonania kódu:
DateInterval Object
(
'y' => 0
'm' => 0
'd' => 1
'h' => 12
'i' => 0
's' => 30
)
Príklad
Vytvorme záporný interval 1 rok a 3 mesiace (interval späť):
<?php
$interval = new DateInterval('P1Y3M');
$interval->invert = 1;
var_dump($interval);
?>
Výsledok vykonania kódu:
DateInterval Object
(
'y' => 1
'm' => 3
'd' => 0
'h' => 0
'i' => 0
's' => 0
'invert' => 1
)
Príklad
Vytvorme záporný interval 2 hodiny, 30 minút (interval späť):
<?php
$interval = new DateInterval('PT2H30M');
$interval->invert = 1;
var_dump($interval);
?>
Výsledok vykonania kódu:
DateInterval Object
(
'y' => 0
'm' => 0
'd' => 0
'h' => 2
'i' => 30
's' => 0
'invert' => 1
)
Príklad
Pridajme interval k aktuálnemu dátumu:
<?php
$date = new DateTime('2023-01-01');
$interval = new DateInterval('P10D');
$date->add($interval);
echo $date->format('Y-m-d');
?>
Výsledok vykonania kódu:
'2023-01-11'
Príklad
Vypočítajme rozdiel medzi dvoma dátumami:
<?php
$date1 = new DateTime('2023-01-01');
$date2 = new DateTime('2023-02-15');
$interval = $date1->diff($date2);
echo $interval->format('%m months %d days');
?>
Výsledok vykonania kódu:
'1 months 14 days'
Pozrite tiež
-
trieda
DateTime,
ktorá reprezentuje dátum a čas -
trieda
DateTimeZone,
ktorá reprezentuje časové pásmo