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

phpDateInterval::__construct(string $duration)

Aikavälin muoto

Muoto koostuu kirjaimesta P (period) ja elementeistä:

phpP{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<?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<?php
  $interval = new DateInterval('PT1H45M30S');
  var_dump($interval);
?>

Koodin suorituksen tulos:

phpDateInterval 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<?php
  $interval = new DateInterval('P3W2D');
  var_dump($interval);
?>

Koodin suorituksen tulos:

phpDateInterval 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<?php
  $interval = new DateInterval('P5M10DT6H');
  var_dump($interval);
?>

Koodin suorituksen tulos:

phpDateInterval 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<?php
  $interval = new DateInterval('P2YT15M');
  var_dump($interval);
?>

Koodin suorituksen tulos:

phpDateInterval 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<?php
  $interval = new DateInterval('P1DT12H30S');
  var_dump($interval);
?>

Koodin suorituksen tulos:

phpDateInterval 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<?php
  $interval = new DateInterval('P1Y3M');
  $interval->invert = 1;
  var_dump($interval);
?>

Koodin suorituksen tulos:

phpDateInterval 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<?php
  $interval = new DateInterval('PT2H30M');
  $interval->invert = 1;
  var_dump($interval);
?>

Koodin suorituksen tulos:

phpDateInterval 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<?php
  $date = new DateTime('2023-01-01');
  $interval = new DateInterval('P10D');
  $date->add($interval);
  echo $date->format('Y-m-d');
?>

Koodin suorituksen tulos:

php'2023-01-11'

Esimerkki

Lasketaan kahden päivämäärän välinen ero:

php<?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:

php'1 months 14 days'

Katso myös

  • luokka DateTime,
    joka edustaa päivämäärää ja aikaa
  • luokka DateTimeZone,
    joka edustaa aikavyöhykettä