Jörg: Und was ist mit September? (php DateTime)

Hallo,

warum ergibt der Code:

echo (new DateTime('next month'))->format('m');
echo "---".(new DateTime('this month'))->format('m');

am 31.08.22 (also heute) ausgeführt:

10---08

?

Ich hätte jetzt 10---09 als Ergebnis erwartet.

Jörg

  1. Die Erkennung von Strings wie 'next month' durch die DateTime-Klasse ist überraschend und kopfschmerzträchtig. Ich vermeide das, wenn es irgend geht. Hilft Dir …

    <?php
    echo (new DateTime('now +1 month' ) )->format('Y-m-d'). PHP_EOL;
    echo (new DateTime('2022-08-01 +1 month' ) )->format('Y-m-d'). PHP_EOL;
    

    weiter? Die zweite Zeile geht vom Monatsanfang aus. Durch Deine Angabe 'next month' werden zum heutigen 31.08.2022 eben 31 Tage (die Länge des aktuellen Monats) addiert - und da ist halt der 01. Oktober: „Kann ja keiner ahnen, was Du willst.“

    Du musst/kannst aber als Ausgangspunkt zum Monatsanfang...

    1. Die Erkennung von Strings wie 'next month' durch die DateTime-Klasse ist überraschend und kopfschmerzträchtig. Ich vermeide das, wenn es irgend geht. Hilft Dir …

      Jep, klar hilft das.

      Du musst/kannst aber als Ausgangspunkt zum Monatsanfang...

      Ok.
      Das Script läuft normalerweise immer am 25. des lfd. Monats, daher ist das noch nie aufgefallen.

      Danke.

      Jörg