Start · Sprachen · PHP · Referenz · DateTimeImmutable

DateTimeImmutable

Klasse

Der moderne, unveränderliche Weg, Daten und Uhrzeiten in PHP zu handhaben — anders als <code>DateTime</code> gibt jede Operation eine neue Instanz zurück.

seit PHP 5.5.0 Kategorie: date

Signatur

class DateTimeImmutable implements DateTimeInterface

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

Typ
DateTimeImmutable
Beschreibung
Neue Instanz.

Beispiele

Jetzt, formatiert

<?php

$now = new DateTimeImmutable('now', new DateTimeZone('Europe/Berlin'));
echo $now->format('d.m.Y H:i');
18.09.2026 09:42

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';
35 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().

Siehe auch