Signatur
Beschreibung
DateTimeImmutable ist die richtige Wahl für Zeit-Arbeit in PHP. Der Unterschied zu DateTime ist entscheidend: alle modifizierenden Methoden geben ein neues Objekt zurück, statt das aktuelle zu verändern. Damit gibt es keine Bugs mehr, wenn ein DateTime-Objekt an eine Funktion übergeben und dort versehentlich mutiert wird.
Nutze immer explizite Timezones — die globale Standard-Timezone via date_default_timezone_set() ist eine tickende Zeitbombe im Team-Kontext.
Für Frameworks wie Laravel gibt es zusätzlich Carbon, das auf DateTimeImmutable aufsetzt und eine flüssigere API bietet.
Parameter
| Name | Typ | Default | Beschreibung |
|---|---|---|---|
| $datetime | string | 'now' | Datum-String im ISO-8601-Format oder relative Angabe wie '+1 week'. |
| $timezone | ?DateTimeZone | null | Timezone-Objekt. Wenn null, wird die Default-Timezone verwendet. |
Rückgabewert
Beispiele
Jetzt, formatiert
<?php
$now = new DateTimeImmutable('now', new DateTimeZone('Europe/Berlin'));
echo $now->format('d.m.Y H:i');
Aus String parsen und Differenz berechnen
<?php
$geburt = DateTimeImmutable::createFromFormat('Y-m-d', '1990-04-15');
$diff = (new DateTimeImmutable())->diff($geburt);
echo $diff->y . ' Jahre';
Rechnen ohne Mutation
<?php
$now = new DateTimeImmutable();
$morgen = $now->modify('+1 day');
// $now wurde nicht verändert!
var_dump($now === $morgen); // false
// Wichtig · Fallstricke
Nie die alte DateTime-Klasse in neuem Code verwenden — nutze immer DateTimeImmutable. Und: strtotime() ist zwar praktisch, aber unvorhersehbar bei ungewöhnlichen Formaten — parse besser mit createFromFormat().