Rolf B: PHP festes Datum plus 6 Monate

Beitrag lesen

Hallo Ottmar,

wie Du die Laufzeit mit den Monaten verheiratest, hat Dedlfix ja schon angedeutet. Achte beim variable parsing darauf, doppelte Anführungszeichen zu verwenden; mit einfachen geht's nicht. Übrigens ist das '+' in date_modify($datum, '+6 month') optional, das kann Dir das Leben erleichern.

Noch zwei Hinweise von mir:

Zum einen ist es einfacher, den aktuellen Timestamp über ein parameterloses date_create() zu holen, oder mit new DateTime(). Zuerst eine String-Repräsentation zu erzeugen und die dann wieder in ein DateTime-Objekt umzuwandeln ist unnötig umständlich.

Zum zweiten muss man mit date_modify aufpassen, weil diese Methode bösartig ist: sie verändert das übergebene DateTime-Objekt. Folgender Code macht nicht, was man naiv glauben könnte:

$jetzt = date_create();
$spaeter = date_modify($jetzt, '+6 month');

Nachdem diese Befehle durchlaufen wurden, sind $jetzt und $spaeter beide 6 Monate in der Zukunft. Man kann sich hier mit dem clone-Operator helfen, der Objekte dupliziert und damit verhindert, dass das in $jetzt angesprochende DateTime-Objekt verändert wird.

$jetzt = date_create();
$spaeter = date_modify(clone $jetzt, '+6 month');

Rolf

--
sumpsi - posui - clusi