Как найти первый/последний понедельник месяца? PHP

Задача — узнать день месяца у первого воскресенья августа, второго понедельника сентября и т.д. function compute_day

Как найти первый/последний понедельник месяца? PHP

» » Сообщение:

Код: Выделить всё Развернуть
/**
 * @param integer $weekNumber Номер недели.
 * @param integer $dayOfWeek Порядковый номер дня недели.
 * @param integer $monthNumber Порядковый номер месяца.
 * @param integer $year Год.
 * @return integer День месяца.
 */
function compute_day($weekNumber, $dayOfWeek, $monthNumber, $year)
{
    // порядковый номер дня недели первого дня месяца $monthNumber
    $dayOfWeekFirstDayOfMonth = date('w', mktime(0, 0, 0, $monthNumber, 1, $year));
 
    // сколько дней осталось до дня недели $dayOfWeek относительно дня недели $dayOfWeekFirstDayOfMonth
    $diference = 0;
 
    // если нужный день недели $dayOfWeek только наступит относительно дня недели $dayOfWeekFirstDayOfMonth
    if ($dayOfWeekFirstDayOfMonth <= $dayOfWeek)
    {
        $diference = $dayOfWeek - $dayOfWeekFirstDayOfMonth;
    }
    // если нужный день недели $dayOfWeek уже прошёл относительно дня недели $dayOfWeekFirstDayOfMonth
    else
    {
        $diference = 7 - $dayOfWeekFirstDayOfMonth + $dayOfWeek;
    }
 
    return 1 + $diference + ($weekNumber - 1) * 7;
}

Юзать:

Код: Выделить всё Развернуть
// первый понедельник января 2011
echo compute_day(1, 1, 1, 2011); // 3
 
// второе воскресенье декабря 2011
echo compute_day(2, 7, 12, 2011); // 11
 
// третья суббота июля 2011
echo compute_day(3, 6, 7, 2011); // 16



Похожие темыКомментарии ПросмотрыПоследнее сообщение
2716Re: Как найти одинаковые значения? ...
Сообщение от: Admin