我正在使用臭名昭着的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
答案 0 :(得分:6)
$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
可能会导致结果不一致。如果您的应用对任务至关重要,请更好地使用+1 day
strtotime('2010-10-31') + 86400
返回2010-10-31
答案 1 :(得分:3)
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/>';
}
}
}