DateInterval Klasi

DateInterval klasi PHP-də zaman intervalları ilə işləməyə imkan verir. O, iki tarix arasındakı fərqi saxlamaq və ya tarixlərlə işləyən metodlarda interval təyin etmək üçün istifadə olunur. Interval xüsusi formatda yaradılır.

Sintaksis

phpDateInterval::__construct(string $duration)

Interval formatı

Format P (period) hərfindən və elementlərdən ibarətdir:

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

Bu formatda: Y - illər, M - aylar, D - günlər, T - zaman ayırıcısı, H - saatlar, M - dəqiqələr, S - saniyələr, W - həftələr.

Bu hərflərdən əvvəl uyğun dəyər yazılmalıdır. Məsələn, 3Y üç il mənasını verəcək, 5Y2M isə 5 il və 2 ayı ifadə edəcək.

Yaradıldıqdan sonra DateInterval obyekti aşağıdakı xüsusiyyətləri ehtiva edəcək:

php<?php
  $interval->y  // illər
  $interval->m  // aylar
  $interval->d  // günlər
  $interval->h  // saatlar
  $interval->i  // dəqiqələr
  $interval->s  // saniyələr
  $interval->f  // mikrosaniyələr
  $interval->invert // 1 əgər interval mənfidirsə
  $interval->days // günlərin sayı (əgər diff() ilə yaradılıbsa)
?>

Gəlin intervalın işləməsinə nümunələrlə baxaq:

Nümunə

1 saat, 45 dəqiqə və 30 saniyəlik interval yaradaq:

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

Kodun icrasının nəticəsi:

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

Nümunə

3 həftə və 2 günlük interval yaradaq:

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

Kodun icrasının nəticəsi:

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

Nümunə

5 ay, 10 gün və 6 saatlıq interval yaradaq:

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

Kodun icrasının nəticəsi:

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

Nümunə

2 il və 15 dəqiqəlik interval yaradaq:

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

Kodun icrasının nəticəsi:

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

Nümunə

1 gün, 12 saat və 30 saniyəlik interval yaradaq:

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

Kodun icrasının nəticəsi:

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

Nümunə

1 il və 3 ay mənfi interval yaradaq (əks istiqamətdə interval):

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

Kodun icrasının nəticəsi:

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

Nümunə

2 saat, 30 dəqiqə mənfi interval yaradaq (əks istiqamətdə interval):

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

Kodun icrasının nəticəsi:

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

Nümunə

Cari tarixə interval əlavə edək:

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

Kodun icrasının nəticəsi:

php'2023-01-11'

Nümunə

İki tarix arasındakı fərqi hesablayaq:

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

Kodun icrasının nəticəsi:

php'1 months 14 days'

Həmçinin baxın