Signatur
Beschreibung
date_create() ist der prozedurale Alias des Konstruktors new DateTime() und erzeugt ein neues DateTime-Objekt. Der Parameter $datetime akzeptiert eine Vielzahl von Datums- und Zeitformaten, die PHP versteht, darunter ISO-8601-Strings wie '2024-06-15 10:30:00', relative Angaben wie 'next Monday' oder '+2 days' sowie den Standardwert 'now' für den aktuellen Zeitpunkt.
Optional kann eine DateTimeZone-Instanz übergeben werden, um die Zeitzone explizit festzulegen. Wird keine Zeitzone angegeben, verwendet PHP die aktuell konfigurierte Standard-Zeitzone (gesetzt über date_default_timezone_set() oder date.timezone in der php.ini).
Im Gegensatz zu new DateTime() gibt die Funktion bei einem Fehler false zurück statt eine Exception zu werfen. Dies macht sie in prozeduralen Codebasen praktisch, erfordert aber eine explizite Fehlerprüfung. Für modernen objektorientierten Code mit sauberer Fehlerbehandlung empfiehlt sich der Einsatz von DateTime::createFromFormat() oder DateTimeImmutable, um unerwartete Mutationen zu vermeiden.
date_create() gibt ein mutable DateTime-Objekt zurück. Soll das Objekt unveränderlich sein, sollte stattdessen date_create_immutable() verwendet werden.
Parameter
| Name | Typ | Default | Beschreibung |
|---|---|---|---|
| $datetime | string | now | Ein Datums-/Zeitstring in einem von PHP unterstützten Format (z. B. '2024-01-15', 'next Friday', '+3 weeks'). Standardmäßig wird der aktuelle Zeitpunkt verwendet. |
| $timezone | ?DateTimeZone | null | Ein DateTimeZone-Objekt, das die gewünschte Zeitzone festlegt. Wenn null, wird die Standard-Zeitzone der PHP-Konfiguration verwendet. |
Rückgabewert
DateTime-Objekt zurück, das den angegebenen Zeitpunkt repräsentiert. Bei einem ungültigen $datetime-String wird false zurückgegeben.Beispiele
Aktuellen Zeitpunkt und spezifisches Datum erstellen
<?php
// Aktuellen Zeitpunkt erzeugen
$now = date_create();
echo date_format($now, 'Y-m-d H:i:s') . PHP_EOL;
// Spezifisches Datum aus String erzeugen
$date = date_create('2024-12-24 18:00:00');
echo date_format($date, 'd.m.Y H:i') . PHP_EOL;
// Relatives Datum
$nextWeek = date_create('+7 days');
echo date_format($nextWeek, 'Y-m-d') . PHP_EOL;
Zeitzone explizit angeben
<?php
$timezone = new DateTimeZone('America/New_York');
$date = date_create('2024-07-04 12:00:00', $timezone);
echo date_format($date, 'Y-m-d H:i:s T') . PHP_EOL;
// Zeitzone wechseln
date_timezone_set($date, new DateTimeZone('Europe/Berlin'));
echo date_format($date, 'Y-m-d H:i:s T') . PHP_EOL;
Fehlerbehandlung bei ungültigem Datum
<?php
$date = date_create('kein-gültiges-datum');
if ($date === false) {
echo 'Fehler: Ungültiger Datums-String.' . PHP_EOL;
} else {
echo date_format($date, 'Y-m-d');
}
// Wichtig · Fallstricke
Mutabilität: Das zurückgegebene DateTime-Objekt ist veränderlich. Operationen wie date_modify() oder date_add() verändern das Objekt direkt. Um unbeabsichtigte Seiteneffekte zu vermeiden – besonders wenn das Objekt an mehreren Stellen verwendet wird –, sollte date_create_immutable() bzw. new DateTimeImmutable() bevorzugt werden.
Fehlerverhalten: Im Gegensatz zu new DateTime() wirft date_create() keine Exception bei Fehlern, sondern gibt false zurück. Der Rückgabewert sollte daher stets mit === false geprüft werden.
Zeitzone in der INI: Ist keine Standard-Zeitzone konfiguriert, erzeugt PHP eine Warnung. Es empfiehlt sich, date.timezone in der php.ini oder per date_default_timezone_set('Europe/Berlin') zu setzen.