Klasė DateInterval
Klasė DateInterval leidžia dirbti su laiko intervalais PHP.
Ji naudojama skirtumui tarp dviejų datų saugoti arba intervalui nustatyti
datų darbo metoduose. Intervalas kuriamas specialiame formate.
Sintaksė
DateInterval::__construct(string $duration)
Intervalo formatas
Formatas susideda iš raidės P (period)
ir elementų:
P{y}Y{m}M{d}DT{h}H{m}M{s}S{w}W
Šiame formate: Y - metai, M - mėnesiai,
D - dienos, T - laiko skiriklis,
H - valandos, M - minutės, S - sekundės,
W - savaitės.
Prieš šias raides reikia rašyti atitinkamą
reikšmę. Pavyzdžiui, 3Y reikš
tris metus, o 5Y2M reikš
5 metus ir 2 mėnesius.
Sukūrus objektas DateInterval
turės šias savybes:
<?php
$interval->y // metai
$interval->m // mėnesiai
$interval->d // dienos
$interval->h // valandos
$interval->i // minutės
$interval->s // sekundės
$interval->f // mikrosekundės
$interval->invert // 1 jei intervalas neigiamas
$interval->days // dienų skaičius (jei sukurta per diff())
?>
Pažiūrėkime intervalo veikimą pavyzdžiuose:
Pavyzdys
Sukurkime intervalą 1 valandai, 45 minutėms ir 30 sekundžių:
<?php
$interval = new DateInterval('PT1H45M30S');
var_dump($interval);
?>
Kodo vykdymo rezultatas:
DateInterval Object
(
'y' => 0
'm' => 0
'd' => 0
'h' => 1
'i' => 45
's' => 30
)
Pavyzdys
Sukurkime intervalą 3 savaitėms ir 2 dienoms:
<?php
$interval = new DateInterval('P3W2D');
var_dump($interval);
?>
Kodo vykdymo rezultatas:
DateInterval Object
(
'y' => 0
'm' => 0
'd' => 23
'h' => 0
'i' => 0
's' => 0
)
Pavyzdys
Sukurkime intervalą 5 mėnesiams, 10 dienų ir 6 valandoms:
<?php
$interval = new DateInterval('P5M10DT6H');
var_dump($interval);
?>
Kodo vykdymo rezultatas:
DateInterval Object
(
'y' => 0
'm' => 5
'd' => 10
'h' => 6
'i' => 0
's' => 0
)
Pavyzdys
Sukurkime intervalą 2 metams ir 15 minučių:
<?php
$interval = new DateInterval('P2YT15M');
var_dump($interval);
?>
Kodo vykdymo rezultatas:
DateInterval Object
(
'y' => 2
'm' => 0
'd' => 0
'h' => 0
'i' => 15
's' => 0
)
Pavyzdys
Sukurkime intervalą 1 dienai, 12 valandų ir 30 sekundžių:
<?php
$interval = new DateInterval('P1DT12H30S');
var_dump($interval);
?>
Kodo vykdymo rezultatas:
DateInterval Object
(
'y' => 0
'm' => 0
'd' => 1
'h' => 12
'i' => 0
's' => 30
)
Pavyzdys
Sukurkime neigiamą intervalą 1 metams ir 3 mėnesiams (intervalas atgal):
<?php
$interval = new DateInterval('P1Y3M');
$interval->invert = 1;
var_dump($interval);
?>
Kodo vykdymo rezultatas:
DateInterval Object
(
'y' => 1
'm' => 3
'd' => 0
'h' => 0
'i' => 0
's' => 0
'invert' => 1
)
Pavyzdys
Sukurkime neigiamą intervalą 2 valandoms, 30 minučių (intervalas atgal):
<?php
$interval = new DateInterval('PT2H30M');
$interval->invert = 1;
var_dump($interval);
?>
Kodo vykdymo rezultatas:
DateInterval Object
(
'y' => 0
'm' => 0
'd' => 0
'h' => 2
'i' => 30
's' => 0
'invert' => 1
)
Pavyzdys
Pridėkime intervalą prie dabartinės datos:
<?php
$date = new DateTime('2023-01-01');
$interval = new DateInterval('P10D');
$date->add($interval);
echo $date->format('Y-m-d');
?>
Kodo vykdymo rezultatas:
'2023-01-11'
Pavyzdys
Apskaičiuokime skirtumą tarp dviejų datų:
<?php
$date1 = new DateTime('2023-01-01');
$date2 = new DateTime('2023-02-15');
$interval = $date1->diff($date2);
echo $interval->format('%m months %d days');
?>
Kodo vykdymo rezultatas:
'1 months 14 days'
Taip pat žiūrėkite
-
klasė
DateTime,
kuri reprezentuoja datą ir laiką -
klasė
DateTimeZone,
kuri reprezentuoja laiko zoną