კლასი 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 თვე %d დღე');
?>

კოდის შესრულების შედეგი:

php'1 თვე 14 დღე'

იხილეთ აგრეთვე

  • კლასი DateTime,
    რომელიც წარმოადგენს თარიღს და დროს
  • კლასი DateTimeZone,
    რომელიც წარმოადგენს დროის სარტყელს