欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页

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

程序员文章站 2022-05-24 14:36:27
...
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