Moin Rolf,
Leider liefert die fehlerhafte Version am 31.07.2023 statt
202306
auch202307
. Der Mai wir allerdings wieder richtig ermittelt.Ist das jetzt ein Bug in strtotime(), oder mache ich nur einen Denkfehler?
die erste Anmerkung in der verlinkten Dokumentation lautet:
Hinweis:
"Relatives" Datum bedeutet in diesem Fall auch, dass nicht angegebene Komponenten des Datums-/Zeitstempels unverändert aus dem baseTimestamp übernommen werden. Das heißt, dass strtotime('February') am 31. Mai 2022 als 31 February 2022 interpretiert wird, was zum Zeitstempel 3 March führt (in einem Schaltjahr wäre es 2 March). Stattdessen strtotime('1 February') oder strtotime('first day of February') zu verwenden, würde dieses Problem vermeiden.
Das dürfte deine Frage beantworten 😉
Dann sollte ich noch testen, was mit Januar als aktuellem Monat passiert, ob dann für die Vormonate wenigstens das Jahr richtig um eins zurückgesetzt wird.
Viele Grüße
Helmut