【PHP】针对时间段的处理

小破孩
2023-04-27 / 0 评论 / 170 阅读 / 正在检测是否收录...

    /**
     * 获取最近七天所有日期
     */
    public function getWeeks($time = '', $format='Y-m-d'){
        $time = $time != '' ? $time : time();
        //组合数据
        $date = [];
        for ($i=1; $i<=7; $i++){
            $date[$i] = date($format ,strtotime( '+' . $i-7 .' days', $time));
        }
        return $date;
    }
    /**
     * 获取起始日期中的所有日期
     * @param $start   开始时间   2022-09-22
     * @param $end     结束时间   2022-09-29
     * @return array
     */
    public function getBetweenTime($start, $end){
        $response = [];

        $dt_start = strtotime($start);
        $dt_end   = strtotime($end);
        while ($dt_start <= $dt_end) {
            array_push($response, date('Y-m-d', $dt_start));
            $dt_start = strtotime('+1 day', $dt_start);
        }
        return $response;
    }
    /**
     * 获取起始时间戳
     * @param string $type 类型 1本年 2本季度 3上月 4本月  5本周 6上周 7下周
     * @return string
     */
    public function getStartEndtime($type=''){
        switch ($type) {
            case 1:
                //本年开始
                $startTime = strtotime(date("Y", time()) . "-1" . "-1");
                //本年结束
                $overTime = strtotime(date("Y", time()) . "-12" . "-31");
                break;
            case 2:
                //获取当前季度
                $season = ceil((date('m')) / 3);
                $startTime = mktime(00, 00, 00, $season * 2 + 1, 1, date('Y'));
                $overTime = mktime(23, 59, 59, $season * 3, date('t', mktime(0, 0, 0, $season * 3, 1, date("Y"))), date('Y'));

                break;
            case 3:
                //上月
                $startTime = mktime(0,0,0,date("m")-1,1,date("Y"));
                $overTime = mktime(0,0,0,date("m"),1,date("Y"))-1;
                break;
            case 4:
                //本月
                $startTime = mktime(0, 0, 0, date('m'), 1, date('Y'));
                $overTime = mktime(23, 59, 59, date('m'), date('t'), date('Y'));
                break;
            case 5:
                //本周
                $startTime=mktime(0,0,0,date('m'),date('d')-date('w')+1,date('Y'));
                $overTime=mktime(23,59,59,date('m'),date('d')-date('w')+7,date('Y'));
                break;
            case 6:
                //上周
                $startTime=mktime(0,0,0,date('m'),date('d')-date('w')+1-7,date('Y'));
                $overTime=mktime(23,59,59,date('m'),date('d')-date('w')+7-7,date('Y'));  break;
            case 7:
                //下周
                $startTime=mktime(0,0,0,date('m'),date('d')-date('w')+1+7,date('Y'));
                $overTime=mktime(23,59,59,date('m'),date('d')-date('w')+7+7,date('Y'));
                break;

            default:
                //今天
                $startTime = mktime(0,0,0,date("m"),date("d"),date("Y"));
                $overTime = mktime(0,0,0,date('m'),date('d')+1,date('Y'))-1;
                break;
        }
        return ['statTime'=>$startTime,'endTime'=>$overTime];
    }
0

评论 (0)

取消