PHPで2つの日付間の月のリストを作成する方法


方法1: DateTimeオブジェクトを使用して月のリストを生成する方法

function getMonthsBetweenDates($startDate, $endDate) {
    $start = new DateTime($startDate);
    $end = new DateTime($endDate);

    $interval = DateInterval::createFromDateString('1 month');
    $period = new DatePeriod($start, $interval, $end);

    $months = [];
    foreach ($period as $date) {
        $months[] = $date->format('Y-m');
    }

    return $months;
}
// 使用例
$startDate = '2022-01-01';
$endDate = '2024-12-31';
$months = getMonthsBetweenDates($startDate, $endDate);
print_r($months);

方法2: strtotimeとdateを使用して月のリストを生成する方法

function getMonthsBetweenDates($startDate, $endDate) {
    $months = [];
    $currentDate = strtotime($startDate);
    $endDate = strtotime($endDate);

    while ($currentDate <= $endDate) {
        $months[] = date('Y-m', $currentDate);
        $currentDate = strtotime('+1 month', $currentDate);
    }

    return $months;
}
// 使用例
$startDate = '2022-01-01';
$endDate = '2024-12-31';
$months = getMonthsBetweenDates($startDate, $endDate);
print_r($months);

どちらの方法も、指定した開始日と終了日の間の月のリストを取得することができます。それぞれの方法には、DateTimeオブジェクトを使用する方法とstrtotimeとdate関数を使用する方法があります。お好みの方法を選択して使用できます。