Intereting Posts
Доступ к многомерному элементу массива без знающих родительских элементов Как Postgres «RAISE EXCEPTION» преобразуется в исключение PDOException? Включение PHP Определяет () с помощью Composer Как избежать добавления одного и того же шаблона навигатора на каждую страницу .html В php я отправляю почту с помощью mail (), она не должна сохраняться в папке отправленных элементов FOSUserBundle & REST Api Call: как использовать пользовательский FormType? Как загрузить определенный div или id ajax и laravel Как найти строку в массиве в PHP? Как CodeIgniter знает, что cookie содержит действительные данные сеанса? Как скрыть сообщение об ошибке Выполнить сценарий оболочки в фоновом режиме, пока страница отображается на экране пользователю в php Не удалось подключиться к WSDL Локальные жетоны JWT недействительны после обновления их в подходе к проверке подлинности JWT Можете ли вы сказать PHP, чтобы отправлять заголовки (например, 500), когда возникает ошибка? Звездный рейтинг, реализующий интервал оценки Уилсона

Первая суббота за выбранный месяц и год

Как я могу найти первую субботу для данного месяца и года (месяц и год, выбранные каландром)? Я использую PHP.

Используйте эту функцию:

<?php /** * * Gets the first weekday of that month and year * * @param int The day of the week (0 = sunday, 1 = monday ... , 6 = saturday) * @param int The month (if false use the current month) * @param int The year (if false use the current year) * * @return int The timestamp of the first day of that month * **/ function get_first_day($day_number=1, $month=false, $year=false) { $month = ($month === false) ? strftime("%m"): $month; $year = ($year === false) ? strftime("%Y"): $year; $first_day = 1 + ((7+$day_number - strftime("%w", @mktime(0,0,0,$month, 1, $year)))%7); return @mktime(0,0,0,$month, $first_day, $year); } // this will output the first saturday of january 2007 (Sat 06-01-2007) echo strftime("%a %d-%m-%Y", get_first_day(6, 1, 2007)); ?> 

Кредиты: php.net


[EDIT]: Еще один короткий путь:

Используйте strtotime () следующим образом:

 $month = 1; $year = 2007; echo date('d/M/Y',strtotime('First Saturday '.date('F o', @mktime(0,0,0, $month, 1, $year)))); 

Эти результаты:

 06/Jan/2007 

Вот однострочный:

 $firstSat = strtotime( 'first Saturday', strtotime( "$month $year" ) ); 

Контрольная работа:

 foreach( array("Jan","Feb","Nov","Dec" ) as $month) { $year = '2017'; echo "$month, $year"; $firstSat = strtotime( 'first Saturday', strtotime( "$month $year" ) ); $date = date( 'YM-d', $firstSat ); echo " $firstSat $date <br>" ; } 

Выходы:

 Jan, 2017 1483747200 2017-Jan-07 Feb, 2017 1486166400 2017-Feb-04 Nov, 2017 1509753600 2017-Nov-04 Dec, 2017 1512172800 2017-Dec-02