DateInterval-luokka
DateInterval-luokka mahdollistaa aikavälien käsittelyn PHP:ssä.
Sitä käytetään kahden päivämäärän välisen eron tallentamiseen tai aikavälin
määrittämiseen päivämäärämenetelmissä. Aikaväli luodaan erityisessä muodossa.
Syntaksi
DateInterval::__construct(string $duration)
Aikavälin muoto
Muoto koostuu kirjaimesta P (period)
ja elementeistä:
P{y}Y{m}M{d}DT{h}H{m}M{s}S{w}W
Tässä muodossa: Y - vuodet, M - kuukaudet,
D - päivät, T - ajan erotin,
H - tunnit, M - minuutit, S - sekunnit,
W - viikot.
Näiden kirjainten eteen tulee kirjoittaa vastaava
arvo. Esimerkiksi 3Y tarkoittaa
kolmea vuotta, ja 5Y2M tarkoittaa
5 vuotta ja 2 kuukautta.
Luomisen jälkeen DateInterval-olio
sisältää seuraavat ominaisuudet:
<?php
$interval->y // vuodet
$interval->m // kuukaudet
$interval->d // päivät
$interval->h // tunnit
$interval->i // minuutit
$interval->s // sekunnit
$interval->f // mikrosekunnit
$interval->invert // 1 jos aikaväli on negatiivinen
$interval->days // päivien lukumäärä (jos luotu diff():llä)
?>
Katsotaan aikavälin toimintaa esimerkein:
Esimerkki
Luodaan aikaväli, joka on 1 tunti, 45 minuuttia ja 30 sekuntia:
<?php
$interval = new DateInterval('PT1H45M30S');
var_dump($interval);
?>
Koodin suorituksen tulos:
DateInterval Object
(
'y' => 0
'm' => 0
'd' => 0
'h' => 1
'i' => 45
's' => 30
)
Esimerkki
Luodaan aikaväli, joka on 3 viikkoa ja 2 päivää:
<?php
$interval = new DateInterval('P3W2D');
var_dump($interval);
?>
Koodin suorituksen tulos:
DateInterval Object
(
'y' => 0
'm' => 0
'd' => 23
'h' => 0
'i' => 0
's' => 0
)
Esimerkki
Luodaan aikaväli, joka on 5 kuukautta, 10 päivää ja 6 tuntia:
<?php
$interval = new DateInterval('P5M10DT6H');
var_dump($interval);
?>
Koodin suorituksen tulos:
DateInterval Object
(
'y' => 0
'm' => 5
'd' => 10
'h' => 6
'i' => 0
's' => 0
)
Esimerkki
Luodaan aikaväli, joka on 2 vuotta ja 15 minuuttia:
<?php
$interval = new DateInterval('P2YT15M');
var_dump($interval);
?>
Koodin suorituksen tulos:
DateInterval Object
(
'y' => 2
'm' => 0
'd' => 0
'h' => 0
'i' => 15
's' => 0
)
Esimerkki
Luodaan aikaväli, joka on 1 päivä, 12 tuntia ja 30 sekuntia:
<?php
$interval = new DateInterval('P1DT12H30S');
var_dump($interval);
?>
Koodin suorituksen tulos:
DateInterval Object
(
'y' => 0
'm' => 0
'd' => 1
'h' => 12
'i' => 0
's' => 30
)
Esimerkki
Luodaan negatiivinen aikaväli, joka on 1 vuosi ja 3 kuukautta (aikaväli taaksepäin):
<?php
$interval = new DateInterval('P1Y3M');
$interval->invert = 1;
var_dump($interval);
?>
Koodin suorituksen tulos:
DateInterval Object
(
'y' => 1
'm' => 3
'd' => 0
'h' => 0
'i' => 0
's' => 0
'invert' => 1
)
Esimerkki
Luodaan negatiivinen aikaväli, joka on 2 tuntia, 30 minuuttia (aikaväli taaksepäin):
<?php
$interval = new DateInterval('PT2H30M');
$interval->invert = 1;
var_dump($interval);
?>
Koodin suorituksen tulos:
DateInterval Object
(
'y' => 0
'm' => 0
'd' => 0
'h' => 2
'i' => 30
's' => 0
'invert' => 1
)
Esimerkki
Lisätään aikaväli nykyiseen päivämäärään:
<?php
$date = new DateTime('2023-01-01');
$interval = new DateInterval('P10D');
$date->add($interval);
echo $date->format('Y-m-d');
?>
Koodin suorituksen tulos:
'2023-01-11'
Esimerkki
Lasketaan kahden päivämäärän välinen ero:
<?php
$date1 = new DateTime('2023-01-01');
$date2 = new DateTime('2023-02-15');
$interval = $date1->diff($date2);
echo $interval->format('%m months %d days');
?>
Koodin suorituksen tulos:
'1 months 14 days'
Katso myös
-
luokka
DateTime,
joka edustaa päivämäärää ja aikaa -
luokka
DateTimeZone,
joka edustaa aikavyöhykettä