Există o modalitate ușoară de a calcula perioadele de timp în PHP?
După câteva cercetări în documentația PHP. Am descoperit că există o clasă PHP specială DatePeriod care poate fi folosită pentru a implementa asta.
„O perioadă de date permite repetarea unui set de date și ore, care se repetă la intervale regulate, pe o anumită perioadă.”
Clasa DatePeriod are o semnătură ca mai jos,
public DatePeriod::__construct ( DateTimeInterface $start , DateInterval $interval , DateTimeInterface $end [, int $options ] )
După cum puteți observa, pentru a crea obiectul DatePeriod aveți nevoie de două obiecte DateTime (Implements DateTimeInterface) și obiect DateInterval.
Puteți crea pur și simplu obiect DateTime trecând șirul de date ca mai jos,
public DateTime::__construct ([ string $time = "now" [, DateTimeZone $timezone = NULL ]] ) $date = new DateTime('2018-01-01'); $date = new DateTime();//now
Pentru a crea un obiect DateInterval trebuie să treceți șirul de interval așa cum este descris mai jos.
public DateInterval::__construct ( string $interval_spec ) $Duration = new DateInterval( "P1M" );
$interval_spec este definit ca mai jos,
Indicator de perioadă (Descriere)
P (Perioadă)
Y (ani)
L (luni)
D (zile)
W (săptămâni. Acestea sunt convertite în zile) , deci nu poate fi combinat cu D.)
T (Timp)
H (ore)
M (minute)
S (secunde)
Mai jos sunt câteva exemple pentru specificațiile intervalului
String
P1Y — 1 an
P2M — 2 luni
P7D — 7 zile
P3W — 3 săptămâni
PT5H — 5 ore
PT2H30M — 2 ore și 30 minute
PT5M45S — 5 minute 45 secunde
P3WT8H — 3 săptămâni 8 ore
P1Y2M3DT4H5M6S — 1 an 2 luni 3 zile 4 ore 5 minute și 6 secunde
Acum trebuie să aveți cunoștințe de bază despre obiectele DateTime și DateInterval. Să creăm un DatePeriod.
$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);
Mai jos, creăm o serie de șiruri de date folosind cunoștințele anterioare.
$dates_arr = array(); foreach($date_period as $date){ array_push($dates_arr,$date->format("Y-m-d")); } print_r($dates_arr);
aici am folosit Format pentru a obține data în formatul de care aveam nevoie.
Spune-mi gândurile tale în comentarii. Noroc !
Urmărește-mă pe twitter @MavenSanK