用于生成交易统计时间戳(常配合echarts走势图使用)

<?php
    
    /**
     * 获取交易统计时间戳 时间段内每小时
     */
    public function getPayCountTimeHours($start_date,$end_date)
    {
        $data = array();

        //计算一共多少个小时
        $hours = intval(($end_date-$start_date)/3600);

        for($i=0; $i<$hours ;$i++){

            $arr = array();

            $arr[] = $end_date - $i*3600;

            $arr[] = $end_date-($i+1)*3600;

            $data[] = $arr;
        }
        
        if(isset($arr[1]) && $arr[1] > $start_date){
            $arr_m[] = $arr[1];
            $arr_m[] = $start_date;
            $data[] = $arr_m;
        }

        krsort($data);
        return $data;
    }


    /**
     * 获取交易统计的时间戳 最近$date_num天
     */
    public function getPayCountTimeDay($date_num)
    {
        $firstday = strtotime('2016-07-01'); //最小时间
        $lastday = strtotime(date('Y-m-d',strtotime('+1 day')));

        $data = array();
        $data_time = $lastday;
        for($i=0;$i<$date_num;$i++){
            $arr = array();
            $arr[]=$data_time;

            $data_time = $data_time-60*60*24;
            $arr[]=$data_time;

            $data[] = $arr;
            if ($data_time<=$firstday) {
                break;
            }
        }
        krsort($data);
        return $data;
    }


    /**
     * 获取本周的开始时间和结束时间戳
     */
     public function the_week()
     {
         //当前日期
         $sdefaultDate = date("Y-m-d");
         //$first =1 表示每周星期一为开始日期 0表示每周日为开始日期
         $first=1;
         //获取当前周的第几天 周日是 0 周一到周六是 1 - 6
         $w=date('w',strtotime($sdefaultDate));
         //获取本周开始日期,如果$w是0,则表示周日,减去 6 天
         $week_start=date('Y-m-d',strtotime("$sdefaultDate -".($w ? $w - $first : 6).' days'));
         //本周结束日期
         $week_end=strtotime("$week_start +6 days") + 24*3600; //需求拿的是,结束时间的下一天
         $week_start = strtotime("$sdefaultDate -".($w ? $w - $first : 6).' days');
         return [$week_start,$week_end];
     }
 
     
     /**
      * 获取交易统计的时间戳 最近$week_num周;
      */
     public function getPayCountTimeWeek($week_num)
     {
         $firstday = strtotime('2016-07-01');
         $time = time();
         $data = array();
 
         $last=mktime(23,59,59,date('m'),date('d')-date('w')+7-7,date('Y'));//上周的结束时间戳
         $endLastweek=mktime(23,59,59,date('m'),date('d')-date('w')+7-7,date('Y'))+1; //上周的介结束时间,本周的开始时间
         $arr = array();
         $arr[]=time();
         $arr[]=$endLastweek;
 
         if(date('Ymd',time()) != date('Ymd',$last)){
             $data[]=$arr;   //先将本周的时间戳放进数组里;
         }else{
             $week_num += 1;
         }
         
         $data_time = $endLastweek;
         for ($i=0; $i < $week_num-1 ; $i++) {
             $arr = array();
             $arr[] = $data_time;
 
             $data_time -= 24*60*60*7;
 
             $arr[] = $data_time;
 
             $data[]=$arr;
 
         }
         krsort($data);
         return $data;
     }


     /**
      * 获取交易统计时间戳 最近$month_num个月
      */
     public function getPayCountTimeMonth($month_num)
     {
         $firstday = strtotime('2016-10-01');
         $time = time();
         $data = array();
 
         $data_time = strtotime(date('Y-m-01'));
         $arr[] = time();
         $arr[] = $data_time;
 
         $data[] = $arr;     //将本月的先放到数组里
 
         for ($i=0; $i < $month_num-1 ; $i++) {
             //如果少于项目开始时间直接返回;
             if ($data_time<=$firstday) {
                 break;
             }
 
             $arr = array();
             // $arr[] = date('Y-m-d H:i:s',$data_time);
             $arr[] = $data_time;
 
 
             $data_time = strtotime(date("Y-m-01",strtotime("-1 month",$data_time)));
 
             $arr[] = $data_time;
 
             $data[]=$arr;
 
         }
         krsort($data);
         return $data;     
     }




 

 

posted @ 2018-08-23 10:57  一粒小米-博客  阅读(1515)  评论(0编辑  收藏  举报