function monthGetWeek(){
//创建一个当天开始的时间戳
$time = time();
$time = mktime(0,0,0,date('m',time()),date('d',time()),date('Y',time()));
//获取格式化当天的日期
$dTime = date('d',$time);
//获得当月总的天数
$tTime = date('t',$time) - 1;
if($dTime == '01'){
//当月开始时间 = 当天
$monthStart = $time;
}else if($dTime === '02'){
//当月开始时间 = 第二天减去一天
$monthStart = strtotime('- 1 day',$time);
}else{
//例如 当前第三天 减去 2天时间 获得当月开始时间
$dTime -= 1;
$monthStart = strtotime('- '.$dTime.' day',$time);
}
//通过当月开始时间获得当月结束时间
$monthEnd = strtotime('+ '.$tTime.' day',$monthStart);
$monthEnd = mktime(23,59,59,date('m',$monthEnd),date('d',$monthEnd),date('Y',$monthEnd));
//获取当月属于星期几
$wTime = date('w',$monthStart);
//如果$wTime == 周日 或 == 周六
if($wTime == 0 || $wTime == 6){
//for 循环5次
$forNumber = 5;
}else{
//for 循环 4 次
$forNumber = 4;
}
for($i=0;$i<$forNumber;$i++){
if($i == 0){
//获取周末到周一相差时间
$allWTime = date('w',$monthStart);
$wTime = 7 - $allWTime;
//等于零说明,开始时间就是当月的开始
if($wTime == 0){
$monthStart_01 = $monthStart;
$monthStart_02 = $monthStart;
}else{
//开始时间 = 当月开始 结束时间 = 开始时间+相差的时间
$monthStart_01 = $monthStart;
$monthStart_02 = strtotime('+ '.$wTime.' day',$monthStart_01);
}
}else{
//之后的循环,开始时间 = 上次结束时间 + 1天
$monthStart_01 = strtotime('+ 1 day',$monthStart_02);
//结束时间 = 开始时间 + 6天
$monthStart_02 = strtotime('+ 6 day',$monthStart_01);
}
//格式化时间
$monthStart_01 = mktime(0,0,0,date('m',$monthStart_01),date('d',$monthStart_01),date('Y',$monthStart_01));
$monthStart_02 = mktime(23,59,59,date('m',$monthStart_02),date('d',$monthStart_02),date('Y',$monthStart_02));
echo '周末开始 '.date('Y-m-d H:i:s',$monthStart_01).' 周末结束 '.date('Y-m-d H:i:s',$monthStart_02).'<br>';
}
//这里能力不行,还没找到解决方法,这条要自己+上去
//这里是开始时间 = 上次的结束时间 + 1天
$monthStart_02 = strtotime(' + 1 day',$monthStart_02);
$monthStart_02 = mktime(0,0,0,date('m',$monthStart_02),date('d',$monthStart_02),date('Y',$monthStart_02));
//这里输出最后月末时间
echo '周末开始 '.date('Y-m-d H:i:s',$monthStart_02).' 周末结束 '.date('Y-m-d H:i:s',$monthEnd).'<br>';
}
monthGetWeek();