时间数据统计~一月内每周的时间段

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();

 

转载于:https://my.oschina.net/u/3554366/blog/1503277

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值