Hier is een mogelijk alternatief voor u. strtotime
is krachtig, en de syntaxis bevat echt nuttige stukjes
zoals uitgebreide relatieve tijd- en datumtekst
.
U kunt het gebruiken om de eerste tot en met de N-de specifieke weekdagen van een specifieke maand te genereren door het formaat " of " te gebruiken. Hier is een voorbeeld met date_create
om een DateTime
aan te roepen object, maar gewone oude strtotime
werkt op dezelfde manier:
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
Het zal ook de maand overlopen, als je om een ongeldige vraagt:
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
Merk op dat het alleen werkt met het volgnummer formulering. Je kunt helaas niet slagen voor "1e" of "3e".
Zodra u dit gebruikt om de juiste N-de weekdag te pakken, kunt u eenvoudig het aantal benodigde weekdagen toevoegen om over te slaan (7 voor een week, 14 voor twee, 21 voor drie, enz.) weken zijn verstreken. Nogmaals, strtotime
te hulp, met behulp van het tweede argument om relatiefheid aan elkaar te koppelen:
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
(Mijn lokale exemplaar accepteerde ook '+14 days First Thursday of March 2011'
, maar dat voelde een beetje raar.)