Start · Sprachen · PHP · Referenz · date_create

date_create

Funktion

Erstellt ein neues <code>DateTime</code>-Objekt aus einer Datums-/Zeitangabe – prozeduraler Alias für <code>new DateTime()</code>.

seit PHP 5.2.0 Kategorie: date

Signatur

date_create(string $datetime = 'now', ?DateTimeZone $timezone = null): DateTime|false

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

Typ
DateTime|false
Beschreibung
Gibt ein 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;
2024-06-15 10:30:00 24.12.2024 18:00 2024-06-22

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;
2024-07-04 12:00:00 EDT 2024-07-04 18:00:00 CEST

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');
}
Fehler: Ungültiger Datums-String.

// 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.