Клас DateInterval

Клас DateInterval омогућава рад са временским интервалима у PHP. Користи се за чување разлике између два датума или за задавање интервала у методама рада са датумима. Интервал се креира у специјалном формату.

Синтакса

phpDateInterval::__construct(string $duration)

Формат интервала

Формат се састоји од слова P (period) и елемената:

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

У овом формату: Y - године, M - месеци, D - дани, T - разделник времена, H - сати, M - минути, S - секунде, W - недеље.

Испред ових слова треба писати одговарајућу вредност. На пример, 3Y ће значити три године, а 5Y2M ће означавати 5 година и 2 месеца.

Након креирања, објекат DateInterval ће садржавати следећа својства:

php<?php
  $interval->y  // године
  $interval->m  // месеци
  $interval->d  // дани
  $interval->h  // сати
  $interval->i  // минути
  $interval->s  // секунде
  $interval->f  // микросекунде
  $interval->invert // 1 ако је интервал негативан
  $interval->days // број дана (ако је креиран преко diff())
?>

Хајде да погледамо рад интервала на примерима:

Пример

Креирајмо интервал од 1 сат, 45 минута и 30 секунди:

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

Резултат извршавања кода:

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

Пример

Креирајмо интервал од 3 недеље и 2 дана:

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

Резултат извршавања кода:

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

Пример

Креирајмо интервал од 5 месеци, 10 дана и 6 сати:

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

Резултат извршавања кода:

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

Пример

Креирајмо интервал од 2 године и 15 минута:

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

Резултат извршавања кода:

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

Пример

Креирајмо интервал од 1 дан, 12 сати и 30 секунди:

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

Резултат извршавања кода:

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

Пример

Креирајмо негативан интервал од 1 годину и 3 месеца (интервал уназад):

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

Резултат извршавања кода:

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

Пример

Креирајмо негативан интервал од 2 сата, 30 минута (интервал уназад):

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

Резултат извршавања кода:

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

Пример

Додајмо интервал тренутном датуму:

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

Резултат извршавања кода:

php'2023-01-11'

Пример

Израчунајмо разлику између два датума:

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

Резултат извршавања кода:

php'1 months 14 days'

Погледајте такође

  • клас DateTime,
    који представља датум и време
  • клас DateTimeZone,
    који представља временску зону