Класси 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,
ки минтақаи вақтиро ифода мекунад