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 months %d days');
?>

Кодты орындау нәтижесі:

php'1 months 14 days'

Сондай-ақ қараңыз

  • DateTime класы,
    күн мен уақытты білдіреді
  • DateTimeZone класы,
    уақыт белдеуін білдіреді