Zde je pro vás možná alternativa. strtotime
je výkonný a syntaxe obsahuje opravdu užitečné kousky
jako úplné znění relativního času a data
.
Můžete jej použít ke generování prvního až N-tého konkrétního dne v týdnu konkrétního měsíce pomocí formátu „ z “. Zde je příklad použití date_create
k vyvolání DateTime
objekt, ale obyčejný starý strtotime
funguje stejným způsobem:
php > $d = date_create('Last Friday of March 2011'); if($d instanceof DateTime) echo $d->format('l F d Y H:i:s');
Friday March 25 2011 00:00:00
php > $d = date_create('First Friday of March 2011'); if($d instanceof DateTime) echo $d->format('l F d Y H:i:s');
Friday March 04 2011 00:00:00
php > $d = date_create('First Sunday of March 2011'); if($d instanceof DateTime) echo $d->format('l F d Y H:i:s');
Sunday March 06 2011 00:00:00
php > $d = date_create('Fourth Sunday of March 2011'); if($d instanceof DateTime) echo $d->format('l F d Y H:i:s');
Sunday March 27 2011 00:00:00
php > $d = date_create('Last Sunday of March 2011'); if($d instanceof DateTime) echo $d->format('l F d Y H:i:s');
Sunday March 27 2011 00:00:00
Také přeteče měsíc, pokud požádáte o neplatný:
php > $d = date_create('Ninth Sunday of March 2011'); if($d instanceof DateTime) echo $d->format('l F d Y H:i:s');
Sunday May 01 2011 00:00:00
Upozorňujeme, že funguje pouze s řadovým číslem formulace. Bohužel nemůžete projít "1st" nebo "3rd".
Jakmile toto použijete k získání správného N-tého dne v týdnu, můžete jednoduše přidat počet potřebných dnů v týdnu, které chcete přeskočit (7 pro jeden týden, 14 pro dva, 21 pro tři atd.) podle potřeby až do určeného koncového data nebo určeného počtu uplynulo několik týdnů. Ještě jednou strtotime
k záchraně pomocí druhého argumentu k řetězení relativních vztahů:
php > echo date('l F d Y H:i:s', strtotime('+14 days', strtotime('First Thursday of March 2011')));
Thursday March 17 2011 00:00:00
(Moje místní kopie také akceptovala '+14 days First Thursday of March 2011'
, ale bylo to trochu divné.)