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 ай %d күн');
?>
Кодду иштетүүнүн натыйжасы:
'1 ай 14 күн'
Дагы караңыз
-
DateTimeкласы,
датаны жана убакытты түшүндүрөт -
DateTimeZoneкласы,
убакыт зонасын түшүндүрөт