生成两个时间之间的每个月份与起始时间

发布时间 2023-08-31 16:22:31作者: 知冷知热
$start_time = 1647100800;
$end_time = 1675353600;

$end_time = strtotime(date("Y-m-d 23:59:59",$end_time));
$array = $this->monthArray($start_time,$end_time);

    /*
     * 输入开始时间和结束时间
     * 按照每个月份分割
     */
    private function monthArray($start_time,$end_time){
        //计算开始时间的当月最后一天
        $next_month = strtotime("+1 month",$start_time);
        $next_month = strtotime(date("Y-m-01 00:00:00",$next_month));
        $last_day = $next_month-1;

        if ($last_day >= $end_time){
            return [
                [
                    'start_time' => $start_time,
                    'end_time' => $end_time,
                    'month' => date("Ymd",$start_time)
                ]
            ];
        }

        $array1 = [
            [
                'start_time' => $start_time,
                'end_time' => $last_day,
                'month' => date("Ymd",$start_time)
            ]
        ];

        $array2 = $this->monthArray($next_month,$end_time);

        return array_merge($array1,$array2);
    }