Klase DateInterval
Klase DateInterval ļauj strādāt ar laika intervāliem PHP.
To izmanto, lai glabātu atšķirību starp diviem datumiem vai lai norādītu intervālu
datumu apstrādes metodēs. Intervāls tiek izveidots īpašā formātā.
Sintakse
DateInterval::__construct(string $duration)
Intervāla formāts
Formāts sastāv no burta P (period)
un elementiem:
P{y}Y{m}M{d}DT{h}H{m}M{s}S{w}W
Šajā formātā: Y - gadi, M - mēneši,
D - dienas, T - laika atdalītājs,
H - stundas, M - minūtes, S - sekundes,
W - nedēļas.
Pirms šīm burtiem jāraksta atbilstošā
vērtība. Piemēram, 3Y nozīmēs
trīs gadus, bet 5Y2M apzīmēs
5 gadus un 2 mēnešus.
Pēc izveides objekts DateInterval
saturēs šādas īpašības:
<?php
$interval->y // gadi
$interval->m // mēneši
$interval->d // dienas
$interval->h // stundas
$interval->i // minūtes
$interval->s // sekundes
$interval->f // mikrosekundes
$interval->invert // 1 ja intervāls ir negatīvs
$interval->days // dienu skaits (ja izveidots caur diff())
?>
Apskatīsim intervāla darbību ar piemēriem:
Piemērs
Izveidosim intervālu 1 stundu, 45 minūtes un 30 sekundes:
<?php
$interval = new DateInterval('PT1H45M30S');
var_dump($interval);
?>
Koda izpildes rezultāts:
DateInterval Object
(
'y' => 0
'm' => 0
'd' => 0
'h' => 1
'i' => 45
's' => 30
)
Piemērs
Izveidosim intervālu 3 nedēļas un 2 dienas:
<?php
$interval = new DateInterval('P3W2D');
var_dump($interval);
?>
Koda izpildes rezultāts:
DateInterval Object
(
'y' => 0
'm' => 0
'd' => 23
'h' => 0
'i' => 0
's' => 0
)
Piemērs
Izveidosim intervālu 5 mēnešus, 10 dienas un 6 stundas:
<?php
$interval = new DateInterval('P5M10DT6H');
var_dump($interval);
?>
Koda izpildes rezultāts:
DateInterval Object
(
'y' => 0
'm' => 5
'd' => 10
'h' => 6
'i' => 0
's' => 0
)
Piemērs
Izveidosim intervālu 2 gadus un 15 minūtes:
<?php
$interval = new DateInterval('P2YT15M');
var_dump($interval);
?>
Koda izpildes rezultāts:
DateInterval Object
(
'y' => 2
'm' => 0
'd' => 0
'h' => 0
'i' => 15
's' => 0
)
Piemērs
Izveidosim intervālu 1 dienu, 12 stundas un 30 sekundes:
<?php
$interval = new DateInterval('P1DT12H30S');
var_dump($interval);
?>
Koda izpildes rezultāts:
DateInterval Object
(
'y' => 0
'm' => 0
'd' => 1
'h' => 12
'i' => 0
's' => 30
)
Piemērs
Izveidosim negatīvu intervālu 1 gadu un 3 mēnešus (intervāls atpakaļ):
<?php
$interval = new DateInterval('P1Y3M');
$interval->invert = 1;
var_dump($interval);
?>
Koda izpildes rezultāts:
DateInterval Object
(
'y' => 1
'm' => 3
'd' => 0
'h' => 0
'i' => 0
's' => 0
'invert' => 1
)
Piemērs
Izveidosim negatīvu intervālu 2 stundas, 30 minūtes (intervāls atpakaļ):
<?php
$interval = new DateInterval('PT2H30M');
$interval->invert = 1;
var_dump($interval);
?>
Koda izpildes rezultāts:
DateInterval Object
(
'y' => 0
'm' => 0
'd' => 0
'h' => 2
'i' => 30
's' => 0
'invert' => 1
)
Piemērs
Pievienosim intervālu pašreizējam datumam:
<?php
$date = new DateTime('2023-01-01');
$interval = new DateInterval('P10D');
$date->add($interval);
echo $date->format('Y-m-d');
?>
Koda izpildes rezultāts:
'2023-01-11'
Piemērs
Aprēķināsim atšķirību starp diviem datumiem:
<?php
$date1 = new DateTime('2023-01-01');
$date2 = new DateTime('2023-02-15');
$interval = $date1->diff($date2);
echo $interval->format('%m months %d days');
?>
Koda izpildes rezultāts:
'1 months 14 days'
Skatiet arī
-
klasi
DateTime,
kura reprezentē datumu un laiku -
klasi
DateTimeZone,
kura reprezentē laika zonu