Klasa DateInterval

Klasa DateInterval lejon punën me intervale kohore në PHP. Ajo përdoret për të ruajtur ndryshimin midis dy datave ose për të caktuar një interval në metodat e punës me data. Intervali krijohet në një format të veçantë.

Sintaksa

phpDateInterval::__construct(string $duration)

Formati i intervalit

Formati përbëhet nga shkronja P (period) dhe elementët:

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

Në këtë format: Y - vitet, M - muajt, D - ditët, T - ndarësi i kohës, H - orët, M - minutat, S - sekondat, W - javët.

Para këtyre shkronjave duhet shkruar vlera përkatëse. Për shembull, 3Y do të thotë tre vjet, ndërsa 5Y2M do të thotë 5 vjet dhe 2 muaj.

Pas krijimit, objekti DateInterval do të përmbajë karakteristikat e mëposhtme:

php<?php
  $interval->y  // vitet
  $interval->m  // muajt
  $interval->d  // ditët
  $interval->h  // orët
  $interval->i  // minutat
  $interval->s  // sekondat
  $interval->f  // mikrosekondat
  $interval->invert // 1 nëse intervali është negativ
  $interval->days // numri i ditëve (nëse është krijuar përmes diff())
?>

Le të shohim funksionimin e intervalit në shembuj:

Shembull

Le të krijojmë një interval prej 1 ore, 45 minutash dhe 30 sekondash:

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

Rezultati i ekzekutimit të kodit:

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

Shembull

Le të krijojmë një interval prej 3 javësh dhe 2 ditësh:

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

Rezultati i ekzekutimit të kodit:

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

Shembull

Le të krijojmë një interval prej 5 muajsh, 10 ditësh dhe 6 orësh:

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

Rezultati i ekzekutimit të kodit:

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

Shembull

Le të krijojmë një interval prej 2 vjetësh dhe 15 minutash:

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

Rezultati i ekzekutimit të kodit:

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

Shembull

Le të krijojmë një interval prej 1 dite, 12 orësh dhe 30 sekondash:

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

Rezultati i ekzekutimit të kodit:

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

Shembull

Le të krijojmë një interval negativ prej 1 viti dhe 3 muajsh (interval prapa):

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

Rezultati i ekzekutimit të kodit:

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

Shembull

Le të krijojmë një interval negativ prej 2 orësh, 30 minutash (interval prapa):

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

Rezultati i ekzekutimit të kodit:

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

Shembull

Le të shtojmë një interval në datën aktuale:

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

Rezultati i ekzekutimit të kodit:

php'2023-01-11'

Shembull

Le të llogarisim ndryshimin midis dy datave:

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

Rezultati i ekzekutimit të kodit:

php'1 months 14 days'

Shihni gjithashtu

  • klasën DateTime,
    e cila përfaqëson datën dhe kohën
  • klasën DateTimeZone,
    e cila përfaqëson zonën kohore