Intereting Posts
codeIgniter использует mysql_real_escape_string () вместо. Проблема подключения к базе данных FB.Event.Subscribe не работает для некоторых пользователей Localhost php_network_getaddresses: getaddrinfo не удалось: такой хост не известен PHP – манипуляция с строками удаляет симпатичные символы и заменяет пробелы Доступ к необработанному запросу веб-сервера Apache Сценарий Bash, выполняемый PHP exec (), не выполняет перенаправление должным образом Отправка 2 сообщений электронной почты с ошибкой PHP php shell_exec touch redirect и adduser Повторение папки приложения zf2 в «Модулях / Приложении» и «Модулях / Приложении / src / Приложение» конвертировать html-файл в pdf с помощью dompdf Использовать класс базы данных PDO без создания нового подключения каждый раз? 64-разрядная версия Linux / Ubuntu и openssl (не удалось прочитать символы: Плохое значение) Загрузка нескольких файлов изображений с использованием HttpURLConnection curl slow connect_time Уничтожить сеанс в php

PHP: получение числа рабочих дней в указанном месяце

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

Предположим, что я даю функцию в этом месяце, в сентябре 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; } 

Благодаря тонну

Solutions Collecting From Web of "PHP: получение числа рабочих дней в указанном месяце"

Не очень умный, но будет работать для вас:

 // 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);