W3docs

date_create()

Erfahren Sie, wie Sie mit der PHP-Funktion date_create() DateTime-Objekte erstellen – Syntax, Parameter und Beispiele.

Einführung

PHPs date_create()-Funktion ist der prozedurale Weg, ein DateTime-Objekt zu erzeugen – den objektorientierten Baustein für nahezu alle Datums- und Zeitoperationen in PHP. Dieser Artikel beschreibt Syntax und Parameter, zeigt, wie man ein DateTime-Objekt ausliest, erklärt das Verhalten bei fehlerhaftem Parsen und verweist auf verwandte Funktionen.

date_create() ist schlicht ein Alias für new DateTime(). Beide sind austauschbar – verwenden Sie daher diejenige, die Ihren Code lesbarer macht. Ein häufiger Grund für date_create() ist, dass die Funktion – anders als der Konstruktor – bei einer ungültigen Eingabe false zurückgibt, anstatt eine Ausnahme zu werfen. Das lässt sich ohne try/catch-Block behandeln.

Die Funktion date_create()

Die Funktion date_create() ist eine eingebaute PHP-Funktion, die ein neues DateTime-Objekt erstellt. Sie nimmt einen optionalen Parameter entgegen, der Datum und Uhrzeit in einem Format angibt, das die Funktion strtotime() versteht. Wird kein Parameter übergeben, gibt die Funktion ein DateTime-Objekt zurück, das das aktuelle Datum und die aktuelle Uhrzeit darstellt.

Syntax

Die Syntax der Funktion date_create() lautet wie folgt:

Syntax der Funktion date_create() in PHP

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

Der erste Parameter $time gibt Datum und Uhrzeit an, für die das DateTime-Objekt erstellt werden soll. Er ist optional und hat den Standardwert "now". Der zweite Parameter $timezone legt die Zeitzone fest. Auch er ist optional und hat den Standardwert NULL.

Parameter

Sehen wir uns die Parameter der Funktion date_create() genauer an:

  • $datetime (optional): Gibt Datum und Uhrzeit für das DateTime-Objekt an. Der Wert kann ein beliebiger string in einem Format sein, das die Funktion strtotime() erkennt – ein absolutes Datum wie "2022-12-31", ein relativer Ausdruck wie "next monday" oder "+1 week", oder ein UNIX-Zeitstempel mit vorangestelltem @ (z. B. "@1672531199"). Der Standardwert "now" liefert das aktuelle Datum und die aktuelle Uhrzeit.
  • $timezone (optional): Ein DateTimeZone-object, das die Zeitzone angibt. Wird er weggelassen (oder auf null gesetzt), wird die Standardzeitzone des Skripts verwendet. Hinweis: Dieser Parameter wird ignoriert, wenn $datetime ein UNIX-Zeitstempel (@...) ist oder bereits einen Zeitzonen-Offset enthält, beispielsweise "2022-12-31 23:59:59+02:00".

Rückgabewert

Bei Erfolg gibt date_create() ein DateTime-Objekt zurück. Bei einem Fehler – etwa wenn $datetime nicht geparst werden kann – gibt die Funktion false zurück, anstatt eine Ausnahme zu werfen. Das Ergebnis lässt sich daher mit einer einfachen Bedingung prüfen:

<?php

$date = date_create('not a real date');

if ($date === false) {
    echo 'Could not parse the date.';
} else {
    echo $date->format('Y-m-d');
}
// Output: Could not parse the date.

Beispiele

Hier sind einige Beispiele für die Verwendung der Funktion date_create():

Beispiel zur Verwendung der Funktion date_create() in PHP

php— editable, runs on the server

Relative Datumsangaben verwenden

Da date_create() alles akzeptiert, was strtotime() versteht, können Sie Datumswerte relativ zu „jetzt" ohne arithmetische Berechnungen erzeugen:

<?php

$today = date_create();
echo $today->format('l') . "\n";          // e.g. Output: Thursday

$nextWeek = date_create('+1 week');
echo $nextWeek->format('Y-m-d') . "\n";   // 7 days from today

$firstOfMonth = date_create('first day of this month');
echo $firstOfMonth->format('Y-m-d');       // e.g. 2023-03-01

Mit dem Ergebnis arbeiten

Sobald Sie ein DateTime-Objekt haben, formatieren Sie es üblicherweise zur Anzeige oder vergleichen es mit einem anderen Datum:

<?php

$start = date_create('2022-01-01');
$end   = date_create('2022-12-31');

// Format the object as a string
echo $end->format('F j, Y') . "\n";   // Output: December 31, 2022

// Compare two DateTime objects directly
echo ($end > $start ? 'end is later' : 'start is later');
// Output: end is later

Verwenden Sie date_format() (oder die oben gezeigte ->format()-Methode), um das object als string darzustellen, und date_diff(), um den Abstand zwischen zwei DateTime-Objekten zu messen.

Verwandte Funktionen

  • date_create_from_format() — erstellt ein DateTime-Objekt aus einem string mit einem selbst definierten Format, anstatt auf die Heuristik von strtotime() zu vertrauen.
  • date_format() — wandelt ein DateTime-Objekt in einen formatierten string um.
  • date_add() — addiert ein DateInterval zu einem DateTime.
  • strtotime() — der Parser, der das Argument $datetime verarbeitet; gibt statt eines Objekts einen UNIX-Zeitstempel zurück.

Fazit

Die Funktion date_create() ist der prozedurale Einstiegspunkt für die Arbeit mit PHPs DateTime-Objekten. Sie akzeptiert sowohl absolute als auch relative Datumsangaben, nimmt optional eine Zeitzone entgegen und gibt bei einem Fehler false zurück, sodass Sie Eingaben ohne Exception-Handling validieren können. Sobald Sie ein DateTime-Objekt haben, formatieren Sie es mit ->format() und vergleichen oder subtrahieren Objekte direkt. Für das Parsen nicht standardmäßiger Eingaben greifen Sie auf date_create_from_format() zurück; zur Ausgabe verwenden Sie date_format().

Übungen

Übung
Was macht die PHP-Funktion date_create()?
Was macht die PHP-Funktion date_create()?
Was this page helpful?