Klasa DateInterval
Klasa DateInterval omogućava rad sa vremenskim intervalima u PHP.
Koristi se za čuvanje razlike između dva datuma ili za zadavanje intervala
u metodama za rad sa datumima. Interval se kreira u specijalnom formatu.
Sintaksa
DateInterval::__construct(string $duration)
Format intervala
Format se sastoji od slova P (period)
i elemenata:
P{y}Y{m}M{d}DT{h}H{m}M{s}S{w}W
U ovom formatu: Y - godine, M - meseci,
D - dani, T - razdvajač vremena,
H - sati, M - minuti, S - sekunde,
W - nedelje.
Ispred ovih slova treba pisati odgovarajuću
vrednost. Na primer, 3Y će značiti
tri godine, a 5Y2M će označavati
5 godina i 2 meseca.
Nakon kreiranja objekat DateInterval
će sadržati sledeće osobine:
<?php
$interval->y // godine
$interval->m // meseci
$interval->d // dani
$interval->h // sati
$interval->i // minuti
$interval->s // sekunde
$interval->f // mikrosekunde
$interval->invert // 1 ako je interval negativan
$interval->days // broj dana (ako je kreirano preko diff())
?>
Hajde da pogledamo rad intervala na primerima:
Primer
Hajde da kreiramo interval od 1 sat, 45 minuta i 30 sekundi:
<?php
$interval = new DateInterval('PT1H45M30S');
var_dump($interval);
?>
Rezultat izvršavanja koda:
DateInterval Object
(
'y' => 0
'm' => 0
'd' => 0
'h' => 1
'i' => 45
's' => 30
)
Primer
Hajde da kreiramo interval od 3 nedelje i 2 dana:
<?php
$interval = new DateInterval('P3W2D');
var_dump($interval);
?>
Rezultat izvršavanja koda:
DateInterval Object
(
'y' => 0
'm' => 0
'd' => 23
'h' => 0
'i' => 0
's' => 0
)
Primer
Hajde da kreiramo interval od 5 meseci, 10 dana i 6 sati:
<?php
$interval = new DateInterval('P5M10DT6H');
var_dump($interval);
?>
Rezultat izvršavanja koda:
DateInterval Object
(
'y' => 0
'm' => 5
'd' => 10
'h' => 6
'i' => 0
's' => 0
)
Primer
Hajde da kreiramo interval od 2 godine i 15 minuta:
<?php
$interval = new DateInterval('P2YT15M');
var_dump($interval);
?>
Rezultat izvršavanja koda:
DateInterval Object
(
'y' => 2
'm' => 0
'd' => 0
'h' => 0
'i' => 15
's' => 0
)
Primer
Hajde da kreiramo interval od 1 dan, 12 sati i 30 sekundi:
<?php
$interval = new DateInterval('P1DT12H30S');
var_dump($interval);
?>
Rezultat izvršavanja koda:
DateInterval Object
(
'y' => 0
'm' => 0
'd' => 1
'h' => 12
'i' => 0
's' => 30
)
Primer
Hajde da kreiramo negativni interval od 1 godinu i 3 meseca (interval unazad):
<?php
$interval = new DateInterval('P1Y3M');
$interval->invert = 1;
var_dump($interval);
?>
Rezultat izvršavanja koda:
DateInterval Object
(
'y' => 1
'm' => 3
'd' => 0
'h' => 0
'i' => 0
's' => 0
'invert' => 1
)
Primer
Hajde da kreiramo negativni interval od 2 sata, 30 minuta (interval unazad):
<?php
$interval = new DateInterval('PT2H30M');
$interval->invert = 1;
var_dump($interval);
?>
Rezultat izvršavanja koda:
DateInterval Object
(
'y' => 0
'm' => 0
'd' => 0
'h' => 2
'i' => 30
's' => 0
'invert' => 1
)
Primer
Dodajmo interval tekućem datumu:
<?php
$date = new DateTime('2023-01-01');
$interval = new DateInterval('P10D');
$date->add($interval);
echo $date->format('Y-m-d');
?>
Rezultat izvršavanja koda:
'2023-01-11'
Primer
Izračunajmo razliku između dva datuma:
<?php
$date1 = new DateTime('2023-01-01');
$date2 = new DateTime('2023-02-15');
$interval = $date1->diff($date2);
echo $interval->format('%m months %d days');
?>
Rezultat izvršavanja koda:
'1 months 14 days'
Vidi još
-
klasu
DateTime,
koja predstavlja datum i vreme -
klasu
DateTimeZone,
koja predstavlja vremensku zonu