DateInterval Sınıfı

DateInterval sınıfı, PHP'de zaman aralıklarıyla çalışmanızı sağlar. İki tarih arasındaki farkı saklamak veya tarih işlemleri yöntemlerinde bir aralık belirtmek için kullanılır. Aralık, özel bir biçimde oluşturulur.

Sözdizimi

phpDateInterval::__construct(string $duration)

Aralık Biçimi

Biçim, P (period) harfi ve aşağıdaki öğelerden oluşur:

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

Bu biçimde: Y - yıllar, M - aylar, D - günler, T - zaman ayırıcı, H - saatler, M - dakikalar, S - saniyeler, W - haftalar.

Bu harflerin önüne ilgili değer yazılmalıdır. Örneğin, 3Y üç yıl anlamına gelirken, 5Y2M 5 yıl ve 2 ay anlamına gelir.

Oluşturulduktan sonra DateInterval nesnesi aşağıdaki özellikleri içerecektir:

php<?php
  $interval->y  // yıllar
  $interval->m  // aylar
  $interval->d  // günler
  $interval->h  // saatler
  $interval->i  // dakikalar
  $interval->s  // saniyeler
  $interval->f  // mikrosaniyeler
  $interval->invert // 1 eğer aralık negatifse
  $interval->days // gün sayısı (eğer diff() ile oluşturulduysa)
?>

Aralığın çalışmasını örneklerle inceleyelim:

Örnek

1 saat, 45 dakika ve 30 saniyelik bir aralık oluşturalım:

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

Kodun çalıştırma sonucu:

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

Örnek

3 hafta ve 2 günlük bir aralık oluşturalım:

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

Kodun çalıştırma sonucu:

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

Örnek

5 ay, 10 gün ve 6 saatlik bir aralık oluşturalım:

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

Kodun çalıştırma sonucu:

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

Örnek

2 yıl ve 15 dakikalık bir aralık oluşturalım:

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

Kodun çalıştırma sonucu:

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

Örnek

1 gün, 12 saat ve 30 saniyelik bir aralık oluşturalım:

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

Kodun çalıştırma sonucu:

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

Örnek

1 yıl ve 3 aylık negatif bir aralık oluşturalım (geriye doğru aralık):

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

Kodun çalıştırma sonucu:

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

Örnek

2 saat, 30 dakikalık negatif bir aralık oluşturalım (geriye doğru aralık):

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

Kodun çalıştırma sonucu:

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

Örnek

Mevcut tarihe bir aralık ekleyelim:

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

Kodun çalıştırma sonucu:

php'2023-01-11'

Örnek

İki tarih arasındaki farkı hesaplayalım:

php<?php
  $date1 = new DateTime('2023-01-01');
  $date2 = new DateTime('2023-02-15');
  $interval = $date1->diff($date2);
  echo $interval->format('%m ay %d gün');
?>

Kodun çalıştırma sonucu:

php'1 ay 14 gün'

Ayrıca Bakınız