Intereting Posts
Как использовать защищенный веб-сервис с WS-Security через SOAP ? Я не могу получить адрес электронной почты пользователя на facebook Печать таблиц с принудительными разрывами страниц Как вычитать с помощью SQL в MYSQL между двумя значениями даты и получить результат в минутах или секунде? Как получить 10 макс и 10 минут строк с этим запросом? .htaccess URL-адрес: проблема с перезаписыванием: наличие ошибок, когда файлы и имена папок одинаковы Laravel: ожидая ответа 250, но получил сообщение с сообщением "" PHP: Проверьте, перенаправляется ли URL? Ошибка с Swift Mailer Не отправлять сообщения Symfony on Heroku: 403 Forbidden У вас нет прав доступа / доступа на этом сервере Предупреждение: mysqli_real_escape_string () ожидает ровно 2 параметра, 1 из них … что я делаю неправильно? Два разных языка PHP и Java в одном приложении с PHP на Apache и Java на Tomcat MongoCursorTimeoutException для агрегатной функции переписать url с помощью файла htaccess? Отдельный процесс php останавливает весь сайт

Найти каждое воскресенье между двумя датами

У меня $fromdate и $todate . Я хочу функцию, которая может рассчитать даты каждого воскресенья, находящиеся между $fromdate и $todate в PHP.

Предполагая, что это объекты даты, начинайте с $ fromdate, добавьте к нему один день, пока эта дата не будет в воскресенье, и до тех пор, пока дата до $ todate. Добавьте 7 дней к каждому воскресенью, которое вы найдете, добавьте эту дату и продолжайте, пока новая дата до $ todate. Следите за каждой датой, найденной таким образом.

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

 function getDateForSpecificDayBetweenDates($startDate, $endDate, $weekdayNumber) { $startDate = strtotime($startDate); $endDate = strtotime($endDate); $dateArr = array(); do { if(date("w", $startDate) != $weekdayNumber) { $startDate += (24 * 3600); // add 1 day } } while(date("w", $startDate) != $weekdayNumber); while($startDate <= $endDate) { $dateArr[] = date('Ym-d', $startDate); $startDate += (7 * 24 * 3600); // add 7 days } return($dateArr); } 

Вызов функции для получения дат для всего воскресенья в 2010 году:

 $dateArr = getDateForSpecificDayBetweenDates('2010-01-01', '2010-12-31', 0); print "<pre>"; print_r($dateArr); 

Повторное использование:

 Array ( [0] => 2010-01-03 [1] => 2010-01-10 [2] => 2010-01-17 [3] => 2010-01-24 [4] => 2010-01-31 [5] => 2010-02-07 ................ ................ ................ [47] => 2010-11-28 [48] => 2010-12-05 [49] => 2010-12-12 [50] => 2010-12-19 [51] => 2010-12-26 ) 

Попробуй это

 function getDateForSpecificDayBetweenDates($start, $end, $weekday = 0){ $weekdays="Sunday,Monday,Tuesday,Wednesday,Thursday,Friday,Saturday"; $arr_weekdays=split(",", $weekdays); $weekday = $arr_weekdays[$weekday]; if(!$weekday) die("Invalid Weekday!"); $start= strtotime("+0 day", strtotime($start) ); $end= strtotime($end); $dateArr = array(); $friday = strtotime($weekday, $start); while($friday <= $end) { $dateArr[] = date("Ymd", $friday); $friday = strtotime("+1 weeks", $friday); } $dateArr[] = date("Ymd", $friday); return $dateArr; } 

Вот как эта функция может быть вызвана …

 $dateArr = getDateForSpecificDayBetweenDates("Today", "+1 year", 0); // 0 Sun, 1 Mon, etc. 

$start и $end strtotime() будут принимать все, что поддерживает strtotime() .

Функции PHPs date () и mktime () должны получить вас там!