Razred DateInterval

Razred DateInterval omogoča delo s časovnimi intervali v PHP. Uporablja se za shranjevanje razlike med dvema datumoma ali za določanje intervala v metodah za delo z datumi. Interval se ustvari v posebnem formatu.

Sintaksa

phpDateInterval::__construct(string $duration)

Format intervala

Format je sestavljen iz črke P (period) in elementov:

phpP{y}Y{m}M{d}DT{h}H{m}M{s}S{w}W

V tem formatu: Y - leta, M - meseci, D - dnevi, T - ločilo časa, H - ure, M - minute, S - sekunde, W - tedni.

Pred temi črkami je treba napisati ustrezno vrednost. Na primer, 3Y bo pomenilo tri leta, 5Y2M pa bo označeval 5 let in 2 meseca.

Po ustvarjanju bo objekt DateInterval vseboval naslednje lastnosti:

php<?php
  $interval->y  // leta
  $interval->m  // meseci
  $interval->d  // dnevi
  $interval->h  // ure
  $interval->i  // minute
  $interval->s  // sekunde
  $interval->f  // mikrosekunde
  $interval->invert // 1 če je interval negativen
  $interval->days // število dni (če je ustvarjeno prek diff())
?>

Poglejmo si delovanje intervala na primerih:

Primer

Ustvarimo interval v 1 uro, 45 minut in 30 sekund:

php<?php
  $interval = new DateInterval('PT1H45M30S');
  var_dump($interval);
?>

Rezultat izvajanja kode:

phpDateInterval Object
(
  'y' => 0
  'm' => 0
  'd' => 0
  'h' => 1
  'i' => 45
  's' => 30
)

Primer

Ustvarimo interval v 3 tedne in 2 dni:

php<?php
  $interval = new DateInterval('P3W2D');
  var_dump($interval);
?>

Rezultat izvajanja kode:

phpDateInterval Object
(
  'y' => 0
  'm' => 0
  'd' => 23
  'h' => 0
  'i' => 0
  's' => 0
)

Primer

Ustvarimo interval v 5 mesecev, 10 dni in 6 ur:

php<?php
  $interval = new DateInterval('P5M10DT6H');
  var_dump($interval);
?>

Rezultat izvajanja kode:

phpDateInterval Object
(
  'y' => 0
  'm' => 5
  'd' => 10
  'h' => 6
  'i' => 0
  's' => 0
)

Primer

Ustvarimo interval v 2 leti in 15 minut:

php<?php
  $interval = new DateInterval('P2YT15M');
  var_dump($interval);
?>

Rezultat izvajanja kode:

phpDateInterval Object
(
  'y' => 2
  'm' => 0
  'd' => 0
  'h' => 0
  'i' => 15
  's' => 0
)

Primer

Ustvarimo interval v 1 dan, 12 ur in 30 sekund:

php<?php
  $interval = new DateInterval('P1DT12H30S');
  var_dump($interval);
?>

Rezultat izvajanja kode:

phpDateInterval Object
(
  'y' => 0
  'm' => 0
  'd' => 1
  'h' => 12
  'i' => 0
  's' => 30
)

Primer

Ustvarimo negativen interval v 1 leto in 3 mesece (interval nazaj):

php<?php
  $interval = new DateInterval('P1Y3M');
  $interval->invert = 1;
  var_dump($interval);
?>

Rezultat izvajanja kode:

phpDateInterval Object
(
  'y' => 1
  'm' => 3
  'd' => 0
  'h' => 0
  'i' => 0
  's' => 0
  'invert' => 1
)

Primer

Ustvarimo negativen interval v 2 uri, 30 minut (interval nazaj):

php<?php
  $interval = new DateInterval('PT2H30M');
  $interval->invert = 1;
  var_dump($interval);
?>

Rezultat izvajanja kode:

phpDateInterval Object
(
  'y' => 0
  'm' => 0
  'd' => 0
  'h' => 2
  'i' => 30
  's' => 0
  'invert' => 1
)

Primer

Dodajmo interval trenutnemu datumu:

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

Rezultat izvajanja kode:

php'2023-01-11'

Primer

Izračunajmo razliko med dvema datumoma:

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');
?>

Rezultat izvajanja kode:

php'1 months 14 days'

Glejte tudi