Я также новичок в этой концепции, но это то, что я нашел, и, похоже, работает. Когда вы используете strtotime('-1 month')
, вы получите 31 февраля. Этот день не существует, поэтому, вероятно, это и является причиной проблемы.
Я нашел этот формат, который получит первый день месяца, который должен исправить проблема. Возможно, это не самый чистый способ сделать это, но, похоже, это сработает.
echo date('M Y', strtotime('first day of -0 month'));
echo date('M Y', strtotime('first day of -1 month'));
echo date('M Y', strtotime('first day of -2 month'));
echo date('M Y', strtotime('first day of -3 month'));
Написав «первый день» до - * месяца, вы получите первый день вместо этого.
Проверьте: https://www.php.net/datetime.formats.relative, где вы можете найти все форматы, которые вы можете использовать.