zoukankan      html  css  js  c++  java
  • PHP实现周和月起止时间计算方法


    当前周的起止时间计算

    public function getWeekend(){
            $date=date("Y-m-d");  //当前日期
            $first=1; //$first =1 表示每周星期一为开始日期 0表示每周日为开始日期
            $w=date('w',strtotime($date));  //获取当前周的第几天 周日是0周一到周六是1-6
            $now_start=date('Y-m-d',strtotime("$date -".($w==0 ? 6 : $w - $first).' days')); //获取本周开始日期,如果$w是0,则表示周日,减去6天
            $now_end=date('Y-m-d',strtotime("$now_start +6 days"));  //本周结束日期
            $week[]=array($now_start,$now_end);
            return $week;
        }

    运行结果:
    weekends演示

    当前月的起止时间计算

        public function getMonth(){
            $date = date("Y-m-d");
            $start_date = date('Y-m-d', mktime(00, 00, 00, date('m', strtotime($date)), 01));
            $end_date = date('Y-m-d', mktime(23, 59, 59, date('m', strtotime($date))+1, 00));
            $month[]=array($start_date,$end_date);
            return $month;
        }

    运行结果:
    months运行结果

    当前周往后的指定周数的起止时间

    public function getWeekends(){
        header('Content-type: text/html; charset=utf-8');
        $date=date("Y-m-d");  //当前日期
        $first=1; //$first =1 表示每周星期一为开始日期 0表示每周日为开始日期
        $w=date('w',strtotime($date));  //获取当前周的第几天 周日是0周一到周六是1-6 
        $now_start=date('Y-m-d',strtotime("$date -".($w==0 ? 6 : $w - $first).' days')); //获取本周开始日期,如果$w是0,则表示周日,减去6天
        $now_end=date('Y-m-d',strtotime("$now_start +6 days"));  //本周结束日期
    
        $weekEndCnt=1;
        $weekStCnt=7;
    
        echo '第0开始日期:'.$now_start.'<br />';
        echo '第0结束日期:'.$now_end.'<br />';
        echo "<br />";
    
        for($i=1;$i<10;$i++){
        $last_start=date('Y-m-d',strtotime("$now_end + ".$weekEndCnt." days"));//开始日期
        $last_end=date('Y-m-d',strtotime("$now_end + ".$weekStCnt." days")); //结束日期    
        echo '第'.$i.'开始日期:'.$last_start.'<br />';
        echo '第'.$i.'结束日期:',$last_end,'<br />';
        $weekStCnt+=7;
        $weekEndCnt+=7;
        echo "<br />";
        }
    }

    运行结果:
    这里写图片描述

    指定月的每周的起止日期

    public function getWeekendsByMonths(){
       $current_year="2017";//指定日期的年份
       $current_month="12";//指定日期的月份
      //该月第一天
      $firstday = strtotime($current_year.'-'.$current_month.'-01');
      //该月的第一周有几天
      $firstweekday = (7 - date('N',$firstday) +1);
      //计算该月第一个周一的时间
      $starttime = $firstday-3600*24*(7-$firstweekday);
      //该月的最后一天
      $lastday = strtotime($current_year.'-'.$current_month.'-01'." +1 month -1 day");
      //该月的最后一周有几天
      $lastweekday = date('N',$lastday);
      //该月的最后一个周末的时间
      $endtime = $lastday-3600*24*($lastweekday%7);
      $step = 3600*24*7;//步长值
      $week_arr = array();
      for ($i=$starttime; $i<$endtime; $i= $i+3600*24*7){
        $week_arr[] = array('Start'=>date('Y-m-d',$i),"End"=>date('Y-m-d',$i+3600*24*6));
      }
      var_dump($week_arr);
    
     }

    运行结果:
    这里写图片描述

    博客园:https://www.cnblogs.com/newtol 微信公众号:Newtol 【转发请务必保留原作者,否则保留追责权利】
  • 相关阅读:
    Caused by: java.lang.NumberFormatException: For input string: "18446744073709551615"
    As/IDEA json自动生成java bean
    OpenSSL + Windows 下载安装
    Https双向认证Android客户端配置
    Linux SSH & SCP命令
    解决服务器上 w3wp.exe 和 sqlservr.exe 的内存占用率居高不下的方案
    echarts 怎样去掉白色边框线 和怎样去除背景中的网格
    echarts 去掉网格线
    Echarts学习记录——如何去掉网格线及网格区域颜色
    JS删除String里某个字符的方法
  • 原文地址:https://www.cnblogs.com/newtol/p/10159130.html
Copyright © 2011-2022 走看看