Есть множество тем, связанных с этим ... но большинство о том, чтобы получить будущий первый, второй, третий или четвертый понедельник (или вторник или пятницу ... или ...) определенного месяца. Не так много о том, как определить, является ли прошедшая дата первым или третьим днем этого месяца. Независимо от того, является ли этот день понедельником, четвергом или любым другим днем, мне необходимо определить, является ли данная дата первой / второй / третьей / четвертой этого конкретного месяца. Затем используйте эту информацию, чтобы предсказать первый / второй / третий / четвертый день будущего месяца:
Я пришел к следующему, кажется, он работает просто отлично, но мне любопытно узнать, есть ли лучше, короче или чище метод.
// given a past date,
$day = ("2019-10-13") ; // happens to be the 2nd Sunday of October ...but how to determine this?
$dow = date('l',strtotime($day)) ; // returns "Sunday"
$dom = date('j',strtotime($day)) ; // returns "13"
$xom = ceil($dom / 7) ; // returns "2"
$xth = array("","first","second","third","fourth","fifth") ;
echo $xth[$xom] ; // echos "second"
// continuing the "sunday" example, get the 2nd Sunday of the current or future month:
$tempDate = date('Y-m-d',strtotime($xth[$xom]. ' ' .$dow. ' of this month')) ; // 2020-02-09
$tempDate = date('Y-m-d',strtotime($xth[$xom]. ' ' .$dow. ' of next month')) ; // 2020-03-08
$tempDate = date('Y-m-d',strtotime($xth[$xom]. ' ' .$dow. ' of 2021-08')) ; // 2021-08-08
Есть ли чище, короче метод для достижения sh такой же? Я надеялся на простое date('c
, strtotime ($ day)) - I know the switch
cdoesn't exist, but if it did maybe return
второе воскресенье` или что-то в этом роде.