开发者

How to extract every Monday and every fortnightly Monday from a range of two dates in PHP?

I'm using the infamous jQuery UI's Datepicker, and in my form I select a range of two dates.

First represents the starting date and the other represents the end date.

What I need now is the algorthm, some tips and directions or helpers for calculating every Monday between these two dates.

For instance:

start: 2011-06-01
end:   2011-06-30
开发者_开发知识库

Should extract me these 4 (four) dates witch lay on Mondays:

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

How could I achive this?

And also, I'd need it for every fortnightly Monday:

Result for fortnightly should be:

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

Now you have all your mondays in $mondays array.

Addendum

Be aware that +86400 could lead to inconsistent result due to daylight saving. If your app is mission-critical better use +1 day

strtotime('2010-10-31') + 86400 returns 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('d-m-Y',mktime(0,0,0,date('m'),date('d')+$i,date('y'))),'<br/>';
    }
}

}

0

上一篇:

下一篇:

精彩评论

暂无评论...
验证码 换一张
取 消

最新问答

问答排行榜