Как извлечь каждый понедельник и каждый раз в две недели понедельника из диапазона двух дат в PHP?

Я использую печально известный jQuery UI Datepicker, и в своей форме я выбираю диапазон из двух дат.

Сначала отображается дата начала, а другая – дата окончания .

Теперь мне нужно найти algorthm, несколько советов и направлений или помощников для расчета каждого понедельника между этими двумя датами.

Например:

start: 2011-06-01 end: 2011-06-30 

Должен ли я извлечь эти 4 (четыре) даты, ведьма лежала по понедельникам:

 1st: 2011-06-06 2nd: 2011-06-13 3rd: 2011-06-20 4th: 2011-06-27 

Как я мог добиться этого?

И также, я буду нуждаться в этом каждые два раза в понедельник:

Результат в течение двух недель:

 1st: 2011-06-06 2rd: 2011-06-20 

 $start = strtotime('2011-06-01'); $end = strtotime('2011-06-30'); $mondays=array(); while( $start <= $end ) { if ( date('N',$start)==1 ) $mondays[]=$start; $start += 86400; //> incrementing one day //> i could have used strtotime('+1 day') but math sum is 10x faster } //> Untested 

Теперь у вас есть все ваши понедельники в $mondays .

добавление

Имейте в +86400 что +86400 может привести к непоследовательному результату из-за перехода на летнее время. Если ваше приложение критически важно, используйте +1 day

strtotime('2010-10-31') + 86400 возвращается 2010-10-31

 function getAllMondays($from_date, $to_date){ // getting number of days between two date range. $number_of_days = count_days(strtotime($from_date),strtotime($to_date)); for($i = 1; $i<=$number_of_days; $i++){ $day = Date('l',mktime(0,0,0,date('m'),date('d')+$i,date('y'))); if($day == 'Monday'){ echo Date('dm-Y',mktime(0,0,0,date('m'),date('d')+$i,date('y'))),'<br/>'; } } 

}