【PHP】针对时间段的处理

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

    /**
     * 获取最近七天所有日期
     */
    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];
    }

    /**
     * @Author:小破孩
     * @Email:3584685883@qq.com
     * @Time:2024/11/11 11:34
     * @return array
     * @Description:获取当前时间到一周前的时间
     */
    public function getTimeStamps() {
        $todayEnd = strtotime(date('Y-m-d 23:59:59'));
        $sevenDaysAgoStart = strtotime('-6 days 00:00:00');
        return [
            'start' => $sevenDaysAgoStart,
            'end' => $todayEnd
        ];
    }

   /**
     * @Author:小破孩
     * @Email:3584685883@qq.com
     * @Time:2024/12/7 11:05
     * @param $year
     * @param $month
     * @return array
     * @Description:获取指定月份的开始时间和结束时间
     */
    public function getMonthStartAndEndTime($year, $month) {
        $startTime = strtotime($year. '-'. $month. '-01 00:00:00');
        $endTime = strtotime($year. '-'. $month. '-'. date('t', strtotime($year. '-'. $month. '-01')). ' 23:59:59');
        return ['statTime'=>$startTime,'endTime'=>$endTime];
    }
0

评论

博主关闭了所有页面的评论