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|falseDer 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 dasDateTime-Objekt an. Der Wert kann ein beliebiger string in einem Format sein, das die Funktionstrtotime()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): EinDateTimeZone-object, das die Zeitzone angibt. Wird er weggelassen (oder aufnullgesetzt), wird die Standardzeitzone des Skripts verwendet. Hinweis: Dieser Parameter wird ignoriert, wenn$datetimeein 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
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-01Mit 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 laterVerwenden 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 einDateTime-Objekt aus einem string mit einem selbst definierten Format, anstatt auf die Heuristik vonstrtotime()zu vertrauen.date_format()— wandelt einDateTime-Objekt in einen formatierten string um.date_add()— addiert einDateIntervalzu einemDateTime.strtotime()— der Parser, der das Argument$datetimeverarbeitet; 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().