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 // кунлар сони (agar 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класси,
вақт зонасини тасвирловчи