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

phpDateInterval::__construct(string $duration)

Ajavahemiku vorming

Vorming koosneb tähest P (period) ja elementidest:

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

Koodi täitmise tulemus:

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

Koodi täitmise tulemus:

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

Koodi täitmise tulemus:

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

Näide

Loome ajavahemiku 2 aastat ja 15 minutit:

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

Koodi täitmise tulemus:

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

Koodi täitmise tulemus:

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

Koodi täitmise tulemus:

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

Koodi täitmise tulemus:

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

Näide

Lisame ajavahemiku praegusele kuupäevale:

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

Koodi täitmise tulemus:

php'2023-01-11'

Näide

Arvutame kahe kuupäeva vahe:

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

php'1 kuud 14 päeva'

Vaata ka