//先取开始日期所处的星期,然后计算时间段内有几个星期
$n = (strtotime($enddate)-strtotime($startdate))/86400;
//$endDate = date("Y-m-d",strtotime("$endDate +1 day"));
if($n<=7){
$day = date("w",strtotime($startdate))-1;
$week_start = date("Y-m-d 00:00:00",strtotime("$startdate -{$day} day"));
$day = 7-$day;
$week_end = date("Y-m-d 00:00:00",strtotime("$startdate +{$day} day"));
if($week_end >= $enddate){
$weekList[] =array($startdate,$enddate);
}else{
$weekList[] =array($startdate,$week_end);
$weekList[] =array($week_end,$enddate);
}
}else{
$day = date("w",strtotime($startdate))-1;
$week_start = date("Y-m-d 00:00:00",strtotime("$startdate -{$day} day"));
$day = 7-$day;
$week_end = date("Y-m-d 00:00:00",strtotime("$startdate +{$day} day"));
$weekList[] =array($startdate,$week_end);
if($week_end >= $enddate){
$weekList[] = array($week_end,$enddate);
}else{
while($week_end <= $enddate){
$start = $week_end;
$week_end = date("Y-m-d 00:00:00",strtotime("$week_end +7 day"));
if($week_end <= $enddate){
$weekList[] = array($start,$week_end);
}else{
$weekList[] = array($start,$enddate);
}
}
}
}
$month = date("Y-m",strtotime($startdate));
//月份第一天的日期
$first_date=$month.'-01';
//月份的天数
$count_days=date("t",strtotime($month));
//月份最后一天的日期
$last_date=date("Y-m-d 00:00:00",strtotime($first_date.($count_days-1)." day"));
if($enddate <= $last_date){
$month_list[] = array($startdate,$enddate);
}else{
$month_list[] = array($startdate,$last_date);
while($enddate > $last_date){
//下个月的第一天
$next_first_day = date("Y-m-d 00:00:00",strtotime($last_date."+1 day"));
//下个月月份
$next_month = date("Y-m",strtotime($next_first_day));
//下月月份的天数
$next_count_days=date("t",strtotime($next_month));
//下个月的最后一天
$last_date = date("Y-m-d 00:00:00",strtotime($next_first_day.($next_count_days-1)." day"));
if($enddate < $last_date){
$month_list[] = array($next_first_day,$enddate);
}else{
$month_list[] = array($next_first_day,$last_date);
}
}
}