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); } } }
获取日的逻辑进行了精简