PHP 获取两个日期之间的月、天

 

获取月:

        $start_year = '2020';//开始年
        $start_month = '01';//开始月
        $end_year = '2021';//结束年
        $end_month = '09';//结束月
        $date_arr = [];//保存结果的数组

        if ($start_year == $end_year) {//本年
            for ($month_i = $start_month; $month_i <= $end_month; $month_i++) {
                $date_arr[] = $start_year . '-' . sprintf("%02d", $month_i);//使用不满2位数时填充0的月份
            }
        } else {//跨年
            for ($year_i = $start_year; $year_i <= $end_year; $year_i++) {
                if ($year_i == $start_year) {
                    //开始年 和'结束年'不同,月从'开始月'直接循环到12月
                    for ($month_i = $start_month; $month_i <= 12; $month_i++) {
                        $date_arr[] = $year_i . '-' . sprintf("%02d", $month_i);
                    }
                } else if ($year_i == $end_year) {
                    //结束年 月循环到'结束月'
                    for ($month_i = 1; $month_i <= $end_month; $month_i++) {
                        $date_arr[] = $year_i . '-' . sprintf("%02d", $month_i);
                    }
                } else {
                    //中间年 从1月循环到12月
                    for ($month_i = 1; $month_i <= 12; $month_i++) {
                        $date_arr[] = $year_i . '-' . sprintf("%02d", $month_i);
                    }
                }
            }
        }

        var_dump($date_arr);//处理结果

 

 获取日:

        $start_year = '2020';//开始年
        $start_month = '01';//开始月
        $end_year = '2021';//结束年
        $end_month = '09';//结束月
        $start_day = '01';//开始日
        $end_day = '23';//结束日
        $date_arr = [];//保存结果的数组
        $week_arr = [0 => '星期日', 1 => '星期一', 2 => '星期二', 3 => '星期三', 4 => '星期四', 5 => '星期五', 6 => '星期六'];

        for ($year_i = $start_year; $year_i <= $end_year; $year_i++) {
            if ($year_i == $start_year) {
                $start_num = $start_month;
            } else {
                $start_num = 1;
            }
            if ($year_i == $end_year) {
                $end_num = $end_month;
            } else {
                $end_num = 12;
            }
            for ($month_i = $start_num; $month_i <= $end_num; $month_i++) {
                $year_month = $year_i . '-' . sprintf("%02d", $month_i);
                $date_str = strtotime($year_month);
                $start_i = 1;
                $end_i = date('t', $date_str);
                if ($month_i == $start_month) {
                    $start_i = (int)$start_day;
                }
                if ($month_i == $end_month) {
                    $end_i = (int)$end_day;
                }
                for ($day_i = $start_i; $day_i <= $end_i; $day_i++) {
                    $title = $year_i.'年'.$month_i.'月'.$day_i.'日('.$week_arr[date('w', strtotime($year_i.'-'.$month_i.'-'.$day_i))].')';//年+月+日+(星期)
                    $date_arr[] = $year_i.'-'.sprintf("%02d", $month_i).'-'.sprintf("%02d", $day_i);//年-月-日
                    var_dump($title);
                }
            }
        }

获取日的逻辑进行了精简

posted @ 2021-09-23 16:07  一剑还  阅读(723)  评论(1编辑  收藏  举报