Dein „Würg-Around“ ist nicht so falsch. Was mir eher nicht gefällt ist der Ansatz via strtotime();
Wenn Du aber etwas anderes willst kannst Du gerne mktime()
nehmen.
<?php
echo "Dieser Monat: " . date( 'Ym', mktime( 0, 0, 0, date("m" )-0, 1, date("Y") ) ) . PHP_EOL;
echo "Letzter Monat: " . date( 'Ym', mktime( 0, 0, 0, date("m" )-1, 1, date("Y") ) ) . PHP_EOL;
echo "Vorletzter Monat: " . date( 'Ym', mktime( 0, 0, 0, date("m" )-2, 1, date("Y") ) ) . PHP_EOL;
echo PHP_EOL . "Januar:" . PHP_EOL;
echo "Dieser Monat: " . date( 'Ym', mktime( 0, 0, 0, 1-0, 1, date("Y") ) ) . PHP_EOL;
echo "Letzter Monat: " . date( 'Ym', mktime( 0, 0, 0, 1-1, 1, date("Y") ) ) . PHP_EOL;
echo "Vorletzter Monat: " . date( 'Ym', mktime( 0, 0, 0, 1-2, 1, date("Y") ) ) . PHP_EOL;
Ausgaben:
Dieser Monat: 202307
Letzter Monat: 202306
Vorletzter Monat: 202305
Januar:
Dieser Monat: 202301
Letzter Monat: 202212
Vorletzter Monat: 202211