Clasa DateInterval
Clasa DateInterval permite lucrul cu intervale de timp în PHP.
Este utilizată pentru a stoca diferența dintre două date sau pentru a specifica un interval
în metodele de lucru cu date. Intervalul este creat într-un format special.
Sintaxă
DateInterval::__construct(string $duration)
Formatul intervalului
Formatul constă din litera P (period)
și elemente:
P{y}Y{m}M{d}DT{h}H{m}M{s}S{w}W
În acest format: Y - ani, M - luni,
D - zile, T - separator de timp,
H - ore, M - minute, S - secunde,
W - săptămâni.
Înaintea acestor litere trebuie să scrieți valoarea
corespunzătoare. De exemplu, 3Y va însemna
trei ani, iar 5Y2M va desemna
5 ani și 2 luni.
După creare, obiectul DateInterval
va conține următoarele proprietăți:
<?php
$interval->y // ani
$interval->m // luni
$interval->d // zile
$interval->h // ore
$interval->i // minute
$interval->s // secunde
$interval->f // microsecunde
$interval->invert // 1 dacă intervalul este negativ
$interval->days // numărul de zile (dacă este creat prin diff())
?>
Să vedem funcționarea intervalului cu exemple:
Exemplu
Să creăm un interval de 1 oră, 45 minute și 30 secunde:
<?php
$interval = new DateInterval('PT1H45M30S');
var_dump($interval);
?>
Rezultatul executării codului:
DateInterval Object
(
'y' => 0
'm' => 0
'd' => 0
'h' => 1
'i' => 45
's' => 30
)
Exemplu
Să creăm un interval de 3 săptămâni și 2 zile:
<?php
$interval = new DateInterval('P3W2D');
var_dump($interval);
?>
Rezultatul executării codului:
DateInterval Object
(
'y' => 0
'm' => 0
'd' => 23
'h' => 0
'i' => 0
's' => 0
)
Exemplu
Să creăm un interval de 5 luni, 10 zile și 6 ore:
<?php
$interval = new DateInterval('P5M10DT6H');
var_dump($interval);
?>
Rezultatul executării codului:
DateInterval Object
(
'y' => 0
'm' => 5
'd' => 10
'h' => 6
'i' => 0
's' => 0
)
Exemplu
Să creăm un interval de 2 ani și 15 minute:
<?php
$interval = new DateInterval('P2YT15M');
var_dump($interval);
?>
Rezultatul executării codului:
DateInterval Object
(
'y' => 2
'm' => 0
'd' => 0
'h' => 0
'i' => 15
's' => 0
)
Exemplu
Să creăm un interval de 1 zi, 12 ore și 30 secunde:
<?php
$interval = new DateInterval('P1DT12H30S');
var_dump($interval);
?>
Rezultatul executării codului:
DateInterval Object
(
'y' => 0
'm' => 0
'd' => 1
'h' => 12
'i' => 0
's' => 30
)
Exemplu
Să creăm un interval negativ de 1 an și 3 luni (interval înapoi):
<?php
$interval = new DateInterval('P1Y3M');
$interval->invert = 1;
var_dump($interval);
?>
Rezultatul executării codului:
DateInterval Object
(
'y' => 1
'm' => 3
'd' => 0
'h' => 0
'i' => 0
's' => 0
'invert' => 1
)
Exemplu
Să creăm un interval negativ de 2 ore, 30 minute (interval înapoi):
<?php
$interval = new DateInterval('PT2H30M');
$interval->invert = 1;
var_dump($interval);
?>
Rezultatul executării codului:
DateInterval Object
(
'y' => 0
'm' => 0
'd' => 0
'h' => 2
'i' => 30
's' => 0
'invert' => 1
)
Exemplu
Să adăugăm un interval la data curentă:
<?php
$date = new DateTime('2023-01-01');
$interval = new DateInterval('P10D');
$date->add($interval);
echo $date->format('Y-m-d');
?>
Rezultatul executării codului:
'2023-01-11'
Exemplu
Să calculăm diferența dintre două date:
<?php
$date1 = new DateTime('2023-01-01');
$date2 = new DateTime('2023-02-15');
$interval = $date1->diff($date2);
echo $interval->format('%m luni %d zile');
?>
Rezultatul executării codului:
'1 luni 14 zile'
Vezi și
-
clasa
DateTime,
care reprezintă data și ora -
clasa
DateTimeZone,
care reprezintă fusul orar