Клас DateInterval
Клас DateInterval
дазваляе працаваць з часовымі інтэрваламі ў PHP.
Ён выкарыстоўваецца для захоўвання розніцы паміж двума датамі або для задання інтэрвала
ў метадах работы з датамі. Інтэрвал ствараецца ў спецыяльным фармаце.
Сінтаксіс
DateInterval::__construct(string $duration)
Фармат інтэрвала
Фармат складаецца з літары P
(period)
і элементаў:
P{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
$interval->y // гады
$interval->m // месяцы
$interval->d // дні
$interval->h // гадзіны
$interval->i // хвіліны
$interval->s // секунды
$interval->f // мікрасекунды
$interval->invert // 1 калі інтэрвал адмоўны
$interval->days // колькасць дзён (калі створана праз diff())
?>
Давайце паглядзім работу інтэрвала на прыкладах:
Прыклад
Створаім інтэрвал у 1
гадзіну, 45
хвілін і 30
секунд:
<?php
$interval = new DateInterval('PT1H45M30S');
var_dump($interval);
?>
Вынік выканання кода:
DateInterval Object
(
'y' => 0
'm' => 0
'd' => 0
'h' => 1
'i' => 45
's' => 30
)
Прыклад
Створаім інтэрвал у 3
тыдні і 2
дні:
<?php
$interval = new DateInterval('P3W2D');
var_dump($interval);
?>
Вынік выканання кода:
DateInterval Object
(
'y' => 0
'm' => 0
'd' => 23
'h' => 0
'i' => 0
's' => 0
)
Прыклад
Створаім інтэрвал у 5
месяцаў, 10
дзён і 6
гадзін:
<?php
$interval = new DateInterval('P5M10DT6H');
var_dump($interval);
?>
Вынік выканання кода:
DateInterval Object
(
'y' => 0
'm' => 5
'd' => 10
'h' => 6
'i' => 0
's' => 0
)
Прыклад
Створаім інтэрвал у 2
гады і 15
хвілін:
<?php
$interval = new DateInterval('P2YT15M');
var_dump($interval);
?>
Вынік выканання кода:
DateInterval Object
(
'y' => 2
'm' => 0
'd' => 0
'h' => 0
'i' => 15
's' => 0
)
Прыклад
Створаім інтэрвал у 1
дзень, 12
гадзін і 30
секунд:
<?php
$interval = new DateInterval('P1DT12H30S');
var_dump($interval);
?>
Вынік выканання кода:
DateInterval Object
(
'y' => 0
'm' => 0
'd' => 1
'h' => 12
'i' => 0
's' => 30
)
Прыклад
Створаім адмоўны інтэрвал у 1
год і 3
месяцы (інтэрвал назад):
<?php
$interval = new DateInterval('P1Y3M');
$interval->invert = 1;
var_dump($interval);
?>
Вынік выканання кода:
DateInterval Object
(
'y' => 1
'm' => 3
'd' => 0
'h' => 0
'i' => 0
's' => 0
'invert' => 1
)
Прыклад
Створаім адмоўны інтэрвал у 2
гадзіны, 30
хвілін (інтэрвал назад):
<?php
$interval = new DateInterval('PT2H30M');
$interval->invert = 1;
var_dump($interval);
?>
Вынік выканання кода:
DateInterval Object
(
'y' => 0
'm' => 0
'd' => 0
'h' => 2
'i' => 30
's' => 0
'invert' => 1
)
Прыклад
Дадамо інтэрвал да бягучай даты:
<?php
$date = new DateTime('2023-01-01');
$interval = new DateInterval('P10D');
$date->add($interval);
echo $date->format('Y-m-d');
?>
Вынік выканання кода:
'2023-01-11'
Прыклад
Вылічым розніцу паміж двума датамі:
<?php
$date1 = new DateTime('2023-01-01');
$date2 = new DateTime('2023-02-15');
$interval = $date1->diff($date2);
echo $interval->format('%m months %d days');
?>
Вынік выканання кода:
'1 months 14 days'
Глядзіце таксама
-
клас
DateTime
,
які ўяўляе дату і час -
клас
DateTimeZone
,
які ўяўляе часовую зону