W3docs

Die Funktion date_get_last_errors() in PHP

Erfahren Sie, wie die PHP-Funktion date_get_last_errors() datumsbezogene Fehler und Warnungen zurückgibt und wie Sie sie zur Fehlersuche einsetzen.

Sind Sie es leid, mit datumsbezogenen Fehlern in Ihrem PHP-Code umzugehen? Dann haben Sie Glück. Die PHP-Funktion date_get_last_errors() ist genau das Richtige für Sie.

In diesem Artikel werfen wir einen genauen Blick darauf, wie die Funktion date_get_last_errors() funktioniert, welche Parameter sie hat und wie Sie sie zur Fehlersuche bei datumsbezogenen Problemen in Ihrem PHP-Code einsetzen können.

Was ist die Funktion date_get_last_errors()?

Die Funktion date_get_last_errors() ist eine eingebaute PHP-Funktion (verfügbar seit PHP 5.2.0), mit der Sie Informationen über den letzten aufgetretenen datumsbezogenen Fehler oder die letzte Warnung abrufen können. Sie gibt ein assoziatives array zurück, das warning_count, warnings, error_count und errors enthält – mit den spezifischen Codes und Textbeschreibungen dessen, was beim letzten Datums-/Zeitvorgang schiefgelaufen ist.

Verwendung von date_get_last_errors()

Um die Funktion date_get_last_errors() zu verwenden, rufen Sie sie auf, nachdem eine Datumserstellungs- oder Datumsänderungsfunktion fehlgeschlagen ist. Für produktionsreife Code sollten Sie immer prüfen, ob die Datumsfunktion false zurückgegeben hat, bevor Sie die Fehlerdetails abrufen. Hier ein Beispiel:

php— editable, runs on the server

In diesem Beispiel versuchen wir, ein Datumsobjekt aus dem string '2022-13-01' zu erstellen, der einen ungültigen Datumswert darstellt (Monat 13 existiert nicht). Nachdem wir geprüft haben, dass date_create_from_format() false zurückgegeben hat, rufen wir date_get_last_errors() auf und geben das zurückgegebene array mit print_r() aus.

Die Ausgabe dieses Codes lautet:

Array
(
    [warning_count] => 1
    [warnings] => Array
        (
            [10] => The parsed date was invalid
        )

    [error_count] => 0
    [errors] => Array
        (
        )

)

Wie Sie sehen, unterscheidet das zurückgegebene array zwischen Warnungen und Fehlern:

  • Fehler bedeuten, dass die Eingabe überhaupt nicht geparst werden konnte (zum Beispiel ein unerwartetes Zeichen oder ein Format, das nicht mit dem string übereinstimmt).
  • Warnungen bedeuten, dass der string geparst wurde, das Ergebnis jedoch fragwürdig ist – etwa ein Wert außerhalb des gültigen Bereichs. Monat 13 existiert nicht, weshalb PHP ihn umrechnet oder ablehnt und die Warnung [10] => The parsed date was invalid auslöst.

Achtung: Der Rückgabewert bei fehlerlosen Operationen

Ein häufiger Fallstrick besteht darin, dass sich der Rückgabewert zwischen PHP-Versionen geändert hat:

  • PHP 5.2 – 8.1: Gibt immer das assoziative array zurück, wobei warning_count und error_count auf 0 gesetzt sind, wenn nichts schiefgelaufen ist.
  • PHP 8.2 und später: Gibt false (boolean) zurück, wenn der vorherige Datumsvorgang weder Warnungen noch Fehler erzeugt hat.

Genau deshalb sollten Sie sich auf das Ergebnis der Datumsfunktion selbst stützen und nicht auf date_get_last_errors():

<?php
// A valid date — parsing succeeds.
$result = date_create_from_format('Y-m-d', '2022-01-15');

if ($result === false) {
    // This branch is skipped because the date is valid.
    print_r(date_get_last_errors());
} else {
    echo "Parsed successfully: " . $result->format('Y-m-d');
}
?>

Ausgabe:

Parsed successfully: 2022-01-15

Da $result ein gültiges DateTime-object ist, rufen wir date_get_last_errors() nie auf – und umgehen damit vollständig die versionsabhängige Überraschung mit false vs. array.

Praktischer Debugging-Workflow

Beim Umgang mit Datums-Parsing in der Produktion sollten Sie diesem Muster folgen, um Probleme sicher zu erfassen und zu protokollieren:

  1. Rufen Sie die Datumserstellungsfunktion auf (z. B. date_create_from_format() oder DateTime::createFromFormat()).
  2. Prüfen Sie, ob das Ergebnis false ist.
  3. Falls false, rufen Sie date_get_last_errors() auf, um die arrays warnings und errors zu untersuchen.
  4. Protokollieren oder zeigen Sie die spezifischen Warn-/Fehlercodes und -meldungen an, um das genaue Parsing-Problem zu identifizieren, ohne Ihre Anwendung zu stoppen.

Parameter

Die Funktion date_get_last_errors() nimmt keine Parameter entgegen. Sie gibt lediglich Informationen über den letzten aufgetretenen datumsbezogenen Fehler oder die letzte Warnung zurück (ein assoziatives array oder false in PHP 8.2+, wenn keine Fehler aufgetreten sind).

Objektorientiertes Äquivalent

Wenn Sie mit der Klasse DateTime anstelle der prozeduralen Funktionen arbeiten, sind dieselben Informationen über die statische Methode DateTime::getLastErrors() verfügbar:

<?php
$result = DateTime::createFromFormat('Y-m-d', 'not-a-date');

if ($result === false) {
    print_r(DateTime::getLastErrors());
}
?>

Ausgabe:

Array
(
    [warning_count] => 0
    [warnings] => Array
        (
        )

    [error_count] => 3
    [errors] => Array
        (
            [0] => A four digit year could not be found
            [10] => Not enough data available to satisfy format
        )

)

Diesmal kann der string überhaupt nicht geparst werden, sodass die Probleme als Fehler (nicht als Warnungen) gemeldet werden. DateTime::getLastErrors() gibt dieselbe Struktur zurück wie date_get_last_errors() und folgt denselben oben beschriebenen Versionsregeln.

Verwandte Funktionen

  • date_create_from_format() — Parst einen Datumsstring anhand eines expliziten Formats; die Funktion, deren Fehler Sie hier untersuchen.
  • date_create() — Erstellt ein DateTime-object aus einem flexiblen Datumsstring.
  • checkdate() — Validiert ein gregorianisches Datum, bevor Sie versuchen, es zu parsen.
  • date() — Formatiert einen Zeitstempel, sobald Sie ein gültiges Datum haben.

Fazit

Die Funktion date_get_last_errors() ist ein wertvolles Werkzeug für jeden PHP-Entwickler, der datumsbezogene Fehler beheben muss. Indem sie die spezifische Warnung oder den spezifischen Fehler des letzten Datums-/Zeitvorgangs aufdeckt, ermöglicht sie das Debuggen von Parsing-Problemen, ohne Ihre Anwendung zu stoppen. Denken Sie an die zwei wichtigen Gewohnheiten: Stützen Sie sich immer auf den eigenen Rückgabewert der Datumsfunktion (false) und berücksichtigen Sie die Änderung in PHP 8.2+, bei der date_get_last_errors() selbst false zurückgibt, wenn nichts schiefgelaufen ist.

Übungen

Übung
Was macht die Funktion date_get_last_errors() in PHP?
Was macht die Funktion date_get_last_errors() in PHP?
Was this page helpful?