DateInterval Klassi

DateInterval klassi PHP-da vaqt intervallari bilan ishlash imkonini beradi. U ikki sana orasidagi farqni saqlash yoki sana bilan ishlash usullarida intervalni belgilash uchun ishlatiladi. Interval maxsus formatda yaratiladi.

Sintaksis

phpDateInterval::__construct(string $duration)

Interval formati

Format P (period) harfidan va elementlardan iborat:

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

Ushbu formatda: Y - yillar, M - oylar, D - kunlar, T - vaqt ajratgichi, H - soatlar, M - daqiqalar, S - soniyalar, W - haftalar.

Ushbu harflar oldiga mos keladigan qiymat yozilishi kerak. Masalan, 3Y uch yilni anglatadi, 5Y2M esa 5 yil va 2 oyni bildiradi.

Yaratilgandan so'ng, DateInterval obyekti quyidagi xususiyatlarni o'z ichiga oladi:

php<?php
  $interval->y  // yillar
  $interval->m  // oylar
  $interval->d  // kunlar
  $interval->h  // soatlar
  $interval->i  // daqiqalar
  $interval->s  // soniyalar
  $interval->f  // mikrosekundlar
  $interval->invert // 1 agar interval manfiy bo'lsa
  $interval->days // kunlar soni (agar diff() orqali yaratilgan bo'lsa)
?>

Keling, intervalning ishlashini misollar orqali ko'rib chiqaylik:

Misol

1 soat, 45 daqiqa va 30 soniyalik interval yaratamiz:

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

Kodni bajarish natijasi:

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

Misol

3 hafta va 2 kunlik interval yaratamiz:

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

Kodni bajarish natijasi:

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

Misol

5 oy, 10 kun va 6 soatlik interval yaratamiz:

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

Kodni bajarish natijasi:

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

Misol

2 yil va 15 daqiqalik interval yaratamiz:

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

Kodni bajarish natijasi:

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

Misol

1 kun, 12 soat va 30 soniyalik interval yaratamiz:

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

Kodni bajarish natijasi:

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

Misol

1 yil va 3 oylik manfiy interval yaratamiz (orqaga interval):

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

Kodni bajarish natijasi:

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

Misol

2 soat, 30 daqiqalik manfiy interval yaratamiz (orqaga interval):

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

Kodni bajarish natijasi:

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

Misol

Joriy sanaga interval qo'shamiz:

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

Kodni bajarish natijasi:

php'2023-01-11'

Misol

Ikki sana orasidagi farqni hisoblaymiz:

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

Kodni bajarish natijasi:

php'1 oy 14 kun'

Yana qarang