Учитывая месяц и будний день, мне нужно создать функцию, которая может получить номер дня по понедельникам, вторникам, средам, четвергам и пятницам.
Предположим, что я даю функцию в этом месяце, в сентябре 2012 года и в будний день номер 1. Функция должна получить все понедельники в сентябре 2012 года: 3, 10, 17 и 24
Обратите внимание, что для меня будний день № 1 – понедельник, номер 2 вторник, 3 – среда, 4 четверг и 5 пятница.
До сих пор я делал: получение первого дня недели, учитывая сегодняшнюю дату (я публикую эту функцию ниже). Но я не знаю, как следовать отсюда простым способом, у меня было много часов, и я подозреваю, что есть лучший способ сделать это. Не могли бы вы показать мне, как?
function getFirstDayOfWeek($date) { $getdate = getdate($date); // How many days ahead monday are we? switch ( $getdate['wday'] ) { case 0: // we are on sunday $days = 6; break; default: // any other day $days = $getdate['wday']-1; break; } $seconds = $days*24*60*60; $monday = date($getdate[0])-$seconds; return $monday; }
Благодаря тонну
Не очень умный, но будет работать для вас:
// sept. 2012 $month = 9; // loop through month days for ($i = 1; $i <= 31; $i++) { // given month timestamp $timestamp = mktime(0, 0, 0, $month, $i, 2012); // to be sure we have not gone to the next month if (date("n", $timestamp) == $month) { // current day in the loop $day = date("N", $timestamp); // if this is between 1 to 5, weekdays, 1 = Monday, 5 = Friday if ($day == 1 OR $day <= 5) { // write it down now $days[$day][] = date("j", $timestamp); } } } // to see if it works :) print_r($days);