PHP获取同比上周、上一个月,上一个季度,去年时间区间

获得时间区间

@param integer $time 2019-2-26

 @param integer $intervalType 区间类型 1:上周,2:本月,3:上一个月,4:本季度,5:上一个季度,6:本年,7:去年,8:昨天

@detail 比如:1.本周是周一到周二  同比本周:上周的周一到周二 2.本月是1-5号  同比本月:上个月的1-5号

 @author wangjun11@leju.com

@return array('stime' => 2019-02-26, 'etime' =>  2019-02-28 23:59:59)

 

 

 public function getIntervalTime($time, $intervalType = 1)

    {

       switch ($intervalType)

       {

           case 2:

              // 本月

              $stime = date('Y-m-d', strtotime(date('Y-m', $time)));

              $etime = date('Y-m-d', $time)." 23:59:59";

              break;

           case 3:

              // 同比本月(上个月)

              $stime = date('Y-m-d', strtotime('-1 month', strtotime(date('Y-m', $time)))); 

              // 上月有28天 查的是31号的数据

              $yday = date('t', strtotime($stime));; // 上个月的天数

              $byday = date('t', $time); // 本月的天数

              $bday = date("d",$time); //本月查的天数

              if($yday < $bday) {

              $etime = date("Y-m",strtotime($stime))."-".$yday." 23:59:59";

              } else if($byday == $bday) {

              $etime = date('Y-m', strtotime($stime))."-".$yday." 23:59:59";

              } else {

              $etime = date('Y-m-d', strtotime('-1 month',$time))." 23:59:59";

              }

              break;

           case 4:

              $season = ceil((date('n',$time))/3);

              $stime = date('Y-m-d', mktime(0, 0, 0,$season*3-3+1,1,date('Y',$time)));

              $etime = date("Y-m-d",$time)." 23:59:59";

              break;

           case 5:

              $season = ceil((date('n',$time))/3)-1;//上季度是第几季度

              $stime = date('Y-m-d', mktime(0, 0, 0,$season*3-3+1,1,date('Y',$time)));

              $xetime = date('Y-m-d', mktime(23,59,59,$season*3,date('t',mktime(0, 0 , 0,$season*3,1,date("Y",$time))),date('Y',$time)))."\n";

          

              $year = date("z" , mktime(23,59,59,12,31,date("Y",$time))) + 1;

    

              $dtime = date("m-d",$time);

              $petime = strtotime($xetime);

 

              if($year == 366 && $dtime=="02-29") {

              $etime = date("Y",$petime)."-11-30"." 23:59:59";

              } else if($year == 366 && ($dtime=="05-31" || $dtime=="05-30")) {

              $etime = date("Y",$petime)."-2-29"." 23:59:59";

              } else if($year == 365 && $dtime=="02-28") {

              $etime = date("Y",$petime)."-11-30"." 23:59:59";

              } else if($year == 365 && ($dtime=="05-31" || $dtime=="05-30" || $dtime=="05-29")) {

              $etime = date("Y",$petime)."-2-28"." 23:59:59";

              } else {

              $etime = date("Y-m-d", strtotime("-3 month",$time))." 23:59:59";

              }

              break;

           case 6:

              $stime = date("Y",$time)."-01-01";

              $etime = date("Y-m-d",$time)." 23:59:59";

              break;

           case 7:

              $stime = date("Y",strtotime("-1 year",$time))."-01-01";

              $jy = date("Y",$time);

              $jyear = date("z" , mktime(23,59,59,12,31,$jy)) + 1;// 今年天数

              $syin = strtotime("-1 year",$time); //上一年 int

              $qn = date("Y",$syin);

              $qyear = date("z" , mktime(23,59,59,12,31,$qn)) + 1; // 去年的天数

              $tday = date("m-d",$time);

 

              if(($jyear < $qyear) && $tday == '02-28') {

              $etime= date("Y", $syin)."-02-29"." 23:59:59";

              } else if(($jyear > $qyear) && $tday == '02-29') {

              $etime= date("Y", $syin)."-02-28"." 23:59:59";

              } else {

              $etime = date("Y-m-d", $syin)." 23:59:59";

              }

              break;

           case 8:

              $stime = date("Y-m-d",strtotime("-1 day"));

              $etime = date("Y-m-d",strtotime("-1 day"))." 23:59:59";

              break;

          default:

              // 同比上周

              if( date('w',$time)== 1) { // 判断今天是一周的第几天

                 $stime = date('Y-m-d', strtotime('-7 day', $time));

              } else {

                 $stime = date('Y-m-d', strtotime('-2 monday', $time));

              }

              $etime = date('Y-m-d', strtotime('-7 day', $time))." 23:59:59";

              

       }// end of switch

       return array('stime' => $stime, 'etime' => $etime);

    }

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值