Как получить все пятницы с текущего месяца

У меня проблема,

$fridays = array(); $fridays[0] = date('Ym-d', strtotime('first friday of this month')); $fridays[1] = date('Ym-d', strtotime('second friday of this month')); $fridays[2] = date('Ym-d', strtotime('third friday of this month')); $fridays[3] = date('Ym-d', strtotime('fourth friday of this month')); $fridays[4] = date('Ym-d', strtotime('fifth friday of this month')); 

но нет пятой пятницы. Несколько месяцев – пятая пятница. Как проверить и не установить последний массив элементов?

 $fifth = strtotime('fifth friday of this month'); if (date('m') === date('m', $fifth)) { $fridays[4] = date('Ym-d', $fifth); } 

Я не на машине, чтобы проверить это, но как насчет чего-то вроде …

 if(date('Ym-d', strtotime('fifth friday of this month')) > ""){ $fridays[4] = date('Ym-d', strtotime('fifth friday of this month')); } 

Ссылка ниже делает точно то же самое и будет охватывать именно то, что вы хотите todo без неуклюжих, если такие утверждения, как описано выше.

ОЧЕНЬ Аналогичное чтение: далее …

месяц будет иметь 5 пятниц, только если он имеет 30 дней, а первая пятница – 1-й или 2-й день месяца, или если у нее 31 день, а первая пятница – 1-й, 2-й или 3-й день месяца, поэтому вы можете сделать условное заявление основанный на этом расчете на 5-й пятничный

Вы можете сделать это, используя функцию даты PHP. Получите месяц, который вы хотите в $timestamp а затем сделайте что-то вроде этого:

 <?php function fridays_get($month, $stop_if_today = true) { $timestamp_now = time(); for($a = 1; $a < 32; $a++) { $day = strlen($a) == 1 ? "0".$a : $a; $timestamp = strtotime($month . "-$day"); $day_code = date("w", $timestamp); if($timestamp > $timestamp_now) break; if($day_code == 5) @$fridays++; } return $fridays; } echo fridays_get('2011-02'); 

Вы можете найти аналогичную статью об этом: На PHP, как узнать, сколько сегодня прошло сегодня в этом месяце?

 for($i=0;$i<=5;$i++) { echo date("d/m/y", strtotime('+'.$i.' week friday september 2012')); } 

Я использовал это как основу для своего собственного решения:

 $fridays = array(); $fridays[0] = date('d',strtotime('first fri of this month')); $fridays[1] = $fridays[0] + 7; $fridays[2] = $fridays[0] + 14; $fridays[3] = $fridays[0] + 21; $fridays['last'] = date('d',strtotime('last fri of this month')); if($fridays[3] == $fridays['last']){ unset($fridays['last']); } else { $fridays[4] = $fridays['last']; unset($fridays['last']); } print_r($fridays); не $fridays = array(); $fridays[0] = date('d',strtotime('first fri of this month')); $fridays[1] = $fridays[0] + 7; $fridays[2] = $fridays[0] + 14; $fridays[3] = $fridays[0] + 21; $fridays['last'] = date('d',strtotime('last fri of this month')); if($fridays[3] == $fridays['last']){ unset($fridays['last']); } else { $fridays[4] = $fridays['last']; unset($fridays['last']); } print_r($fridays); не $fridays = array(); $fridays[0] = date('d',strtotime('first fri of this month')); $fridays[1] = $fridays[0] + 7; $fridays[2] = $fridays[0] + 14; $fridays[3] = $fridays[0] + 21; $fridays['last'] = date('d',strtotime('last fri of this month')); if($fridays[3] == $fridays['last']){ unset($fridays['last']); } else { $fridays[4] = $fridays['last']; unset($fridays['last']); } print_r($fridays); 

Мне нужно было собрать каждую пятницу каждую месяц, даже если их было 5, и это, казалось, сделало трюк, используя исходный вопрос в качестве моей основы.

У меня есть функция считать пятницу в моем собственном приложении … это может быть полезно для кого-то.

 function countFridays($month,$year){ $ts=strtotime('first friday of '.$year.'-'.$month.'-01'); $ls=strtotime('last day of '.$year.'-'.$month.'-01'); $fridays=array(date('Ym-d', $ts)); while(($ts=strtotime('+1 week', $ts))<=$ls){ $fridays[]=date('Ym-d', $ts); }return $fridays; }