Klass DateInterval
Klass DateInterval võimaldab töötada ajavahemikega PHP-s.
Seda kasutatakse kahe kuupäeva vahe salvestamiseks või ajavahemiku määramiseks
kuupäevade töötlemise meetodites. Ajavahemik luuakse spetsiaalses vormingus.
Süntaks
DateInterval::__construct(string $duration)
Ajavahemiku vorming
Vorming koosneb tähest P (period)
ja elementidest:
P{y}Y{m}M{d}DT{h}H{m}M{s}S{w}W
Selles vormingus: Y - aastad, M - kuud,
D - päevad, T - aja eraldaja,
H - tunnid, M - minutid, S - sekundid,
W - nädalad.
Enne neid tähti tuleb kirjutada vastav
väärtus. Näiteks 3Y tähendab
kolme aastat ja 5Y2M tähistab
5 aastat ja 2 kuud.
Pärast loomist sisaldab objekt DateInterval
järgmisi omadusi:
<?php
$interval->y // aastad
$interval->m // kuud
$interval->d // päevad
$interval->h // tunnid
$interval->i // minutid
$interval->s // sekundid
$interval->f // mikrosekundid
$interval->invert // 1 kui ajavahemik on negatiivne
$interval->days // päevade arv (kui loodud diff()-ga)
?>
Vaatame ajavahemiku tööd näidete varal:
Näide
Loome ajavahemiku 1 tund, 45 minutit ja 30 sekundit:
<?php
$interval = new DateInterval('PT1H45M30S');
var_dump($interval);
?>
Koodi täitmise tulemus:
DateInterval Object
(
'y' => 0
'm' => 0
'd' => 0
'h' => 1
'i' => 45
's' => 30
)
Näide
Loome ajavahemiku 3 nädalat ja 2 päeva:
<?php
$interval = new DateInterval('P3W2D');
var_dump($interval);
?>
Koodi täitmise tulemus:
DateInterval Object
(
'y' => 0
'm' => 0
'd' => 23
'h' => 0
'i' => 0
's' => 0
)
Näide
Loome ajavahemiku 5 kuud, 10 päeva ja 6 tundi:
<?php
$interval = new DateInterval('P5M10DT6H');
var_dump($interval);
?>
Koodi täitmise tulemus:
DateInterval Object
(
'y' => 0
'm' => 5
'd' => 10
'h' => 6
'i' => 0
's' => 0
)
Näide
Loome ajavahemiku 2 aastat ja 15 minutit:
<?php
$interval = new DateInterval('P2YT15M');
var_dump($interval);
?>
Koodi täitmise tulemus:
DateInterval Object
(
'y' => 2
'm' => 0
'd' => 0
'h' => 0
'i' => 15
's' => 0
)
Näide
Loome ajavahemiku 1 päev, 12 tundi ja 30 sekundit:
<?php
$interval = new DateInterval('P1DT12H30S');
var_dump($interval);
?>
Koodi täitmise tulemus:
DateInterval Object
(
'y' => 0
'm' => 0
'd' => 1
'h' => 12
'i' => 0
's' => 30
)
Näide
Loome negatiivse ajavahemiku 1 aasta ja 3 kuu (tagurpidi ajavahemik):
<?php
$interval = new DateInterval('P1Y3M');
$interval->invert = 1;
var_dump($interval);
?>
Koodi täitmise tulemus:
DateInterval Object
(
'y' => 1
'm' => 3
'd' => 0
'h' => 0
'i' => 0
's' => 0
'invert' => 1
)
Näide
Loome negatiivse ajavahemiku 2 tundi, 30 minutit (tagurpidi ajavahemik):
<?php
$interval = new DateInterval('PT2H30M');
$interval->invert = 1;
var_dump($interval);
?>
Koodi täitmise tulemus:
DateInterval Object
(
'y' => 0
'm' => 0
'd' => 0
'h' => 2
'i' => 30
's' => 0
'invert' => 1
)
Näide
Lisame ajavahemiku praegusele kuupäevale:
<?php
$date = new DateTime('2023-01-01');
$interval = new DateInterval('P10D');
$date->add($interval);
echo $date->format('Y-m-d');
?>
Koodi täitmise tulemus:
'2023-01-11'
Näide
Arvutame kahe kuupäeva vahe:
<?php
$date1 = new DateTime('2023-01-01');
$date2 = new DateTime('2023-02-15');
$interval = $date1->diff($date2);
echo $interval->format('%m kuud %d päeva');
?>
Koodi täitmise tulemus:
'1 kuud 14 päeva'
Vaata ka
-
klass
DateTime,
mis esindab kuupäeva ja kellaaega -
klass
DateTimeZone,
mis esindab ajavööndit