Сегодняшняя дата 27-01-2014, поэтому я получил название дня, используя следующую функцию:
$t=date('dm-Y'); $day = strtolower(date("D",strtotime($t)));
Итак, теперь имя дня – mon
.
Как узнать, что этот понедельник – четвертый понедельник текущего месяца? Другими словами, я пытаюсь найти 1-й, 2-й, 3-й, 4-й определенный день (например, понедельник) месяца?
Кредит для Математической части идет к Джону (выше)
В сочетании с вашим кодом полное решение может быть реализовано следующим образом
$t=date('dm-Y'); $dayName = strtolower(date("D",strtotime($t))); $dayNum = strtolower(date("d",strtotime($t))); echo floor(($dayNum - 1) / 7) + 1
или как функция с дополнительной датой
PHP Fiddle здесь
Это просто возвращает номер, который вы запрашиваете.
function dayNumber($date=''){ if($date==''){ $t=date('dm-Y'); } else { $t=date('dm-Y',strtotime($date)); } $dayName = strtolower(date("D",strtotime($t))); $dayNum = strtolower(date("d",strtotime($t))); $return = floor(($dayNum - 1) / 7) + 1; return $return; } echo dayNumber('2014-01-27');
$date = mktime(0, 0, 0, 1, 27, 2014); $dayNumber = date("d", $date); $dayOfWeek = date("l", $date); $dayPosition = (floor(($dayNumber - 1) / 7) + 1); switch ($dayPosition) { case 1: $suffix = 'st'; break; case 2: $suffix = 'nd'; break; case 3: $suffix = 'rd'; break; default: $suffix = 'th'; } echo "Today is the " . $dayPosition . $suffix . " " . $dayOfWeek . " of the month."; // Will echo: Today is the 4th Monday of the month.
Спасибо @Jon за математику.