@kirill-93

Как на php правильно получать предыдущий месяц?

Мне нужно получить 6 последних месяцев (кроме текущего) в PHP в виде месяц, год. Как это правильно сделать?
Если пытаться получить так:
$dates = [];
for ($i = 1; $i < 6; $i++) {
    $date = new DateTime("- ${i} month");
    $dates[] = [
        'month' => $date->format('n'),
        'year' => $date->format('Y')
    ];
}

То если запустить его, например 30 марта, то -1 месяц будет 1 марта. Как правильно сделать то, что мне нужно?
  • Вопрос задан
  • 462 просмотра
Пригласить эксперта
Ответы на вопрос 2
Adamos
@Adamos
Посмотрите на результат выражения date('Ym'). Долго. Вдумчиво...
Ответ написан
Комментировать
@AlexRas
$dates = [];

for ($i = 1; $i <= 6; $i++) {
	$date = new DateTime();
	$date->modify('first day of this month');
	$date->modify("-$i month");
	$dates[$i] = [
		'month' => $date->format('n'),
		'year' => $date->format('Y'),
	];
}

print_r($dates);


Такая проблема только при вычитании в конце месяца. Решение перевести месяц в первое число, так как числа вам не важны.
Ответ написан
Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы