PHP da vaqt davrlarini hisoblashning oson usuli bormi?

PHP hujjatlarini biroz o'rganib chiqqandan so'ng. Men buni amalga oshirish uchun ishlatilishi mumkin bo'lgan "DatePeriod" maxsus PHP sinfini topdim.

“Sana davri ma’lum vaqt oralig‘ida muntazam takrorlanadigan sana va vaqtlar to‘plamini takrorlashga imkon beradi.”

DatePeriod klassi quyidagi imzoga ega,

public DatePeriod::__construct ( DateTimeInterface $start , DateInterval $interval , DateTimeInterface $end [, int $options ] )

Ko'rib turganingizdek, DatePeriod obyektini yaratish uchun sizga ikkita DateTime (DateTimeInterfaceni amalga oshiradi) va DateInterval obyekti kerak bo'ladi.

Quyidagi kabi sana qatorini o'tkazish orqali DateTime obyektini yaratishingiz mumkin,

public DateTime::__construct ([ string $time = "now" [, DateTimeZone $timezone = NULL ]] )
$date = new DateTime('2018-01-01');
$date = new DateTime();//now

DateInterval ob'ektini yaratish uchun siz quyida tavsiflanganidek intervalli qatorni o'tkazishingiz kerak.

public DateInterval::__construct ( string $interval_spec )
$Duration = new DateInterval( "P1M" );

$interval_spec quyidagi tarzda aniqlanadi,

Davr belgisi (tavsif)
P (davr)
Y (yillar)
M (oylar)
D (kunlar)
Vt (haftalar. Bu kunlarga aylantiriladi. , shuning uchun D bilan birlashtirilmaydi.)
T (Vaqt)
H (soat)
M (daqiqa)
S (sekundlar)

Quyida intervalli spetsifikatsiyalar uchun ba'zi namunalar keltirilgan

String
P1Y — 1 yil
P2M — 2 oy
P7D — 7 kun
P3W — 3 hafta
PT5H — 5 soat
PT2H30M — 2 soat va 30 daqiqa
PT5M45S — 5 daqiqa 45 soniya
P3WT8H — 3 hafta 8 soat
P1Y2M3DT4H5M6S — 1 yil 2 oy 3 kun 4 soat 5 daqiqa va 6 soniya

Endi siz DateTime va DateInterval ob'ektlari haqida asosiy tushunchaga ega bo'lishingiz kerak. Keling, DatePeriod yarataylik.

$start = new DateTime( '2018-01-01' );
$end = new DateTime( '2018-04-01' );
$interval = new DateInterval('P1D');//one day interval
$date_period = new DatePeriod($start, $interval ,$end);

Quyida biz oldingi bilimlardan foydalangan holda sanalar qatorini yaratamiz.

$dates_arr = array();
foreach($date_period as $date){
    array_push($dates_arr,$date->format("Y-m-d"));
}
print_r($dates_arr);

Bu yerda men kerakli formatdagi sanani olish uchun Format dan foydalandim.

Fikrlaringizni izohlarda bildiring. Salom!

Twitterda meni kuzatib boring @MavenSanK