Как получить перечень всех месяцев, входящих в заданный интервал дат (PHP)
Задача: есть две даты, надо получить перечень всех месяцев, которые затрагивает данный интервал.
Решение:
function getMonths(DateTime $startD, DateTime $endD)
{
$start = $startD->modify('first day of this month');
$end = $endD->modify('first day of next month');
$interval = DateInterval::createFromDateString('1 month');
$period = new DatePeriod($start, $interval, $end);
$results = [];
foreach ($period as $d) {
$results[$d->format("Y")][] = $d->format("m");
}
return $results;
}
$date1 = new DateTime('2023-02-02 00:00:00');
$date2 = new DateTime('2023-10-03 00:00:00');
$result = getMonths(date1, date2);
var_dump( $result );
Результат:
array (size=1)
2023 =>
array (size=10)
0 => string '02' (length=2)
1 => string '03' (length=2)
2 => string '04' (length=2)
3 => string '05' (length=2)
4 => string '06' (length=2)
5 => string '07' (length=2)
6 => string '08' (length=2)
7 => string '09' (length=2)
8 => string '10' (length=2)
9 => string '11' (length=2)
Комментарии