PHP 7.4.24 Released!

DateTime::getLastErrors

date_get_last_errors

(PHP 5 >= 5.3.0, PHP 7, PHP 8)

DateTime::getLastErrors -- date_get_last_errorsLiefert die Warnungen und Fehler

Beschreibung

Objektorientierter Stil

public static DateTime::getLastErrors(): array|false

Prozeduraler Stil

date_get_last_errors(): array|false

Gibt ein Array mit Warnungen und Fehlern zurück, die bei der Analyse eines Datums-/Zeit-Strings gefunden wurden.

Parameter-Liste

Diese Funktion besitzt keine Parameter.

Rückgabewerte

Gibt ein Array mit Warnungen und Fehlern zurück oder false, wenn es weder Warnungen noch Fehler gibt.

Beispiele

Beispiel #1 DateTime::getLastErrors()-Beispiel

Objektorientierter Stil

<?php
try {
    
$date = new DateTime('asdfasdf');
} catch (
Exception $e) {
    
// Nur zu Demonstrationszwecken...
    
print_r(DateTime::getLastErrors());

    
// Die richtige objektorientierte Weise, um dies zu tun, ist
    // echo $e->getMessage();
}
?>

Prozeduraler Stil

<?php
$date 
date_create('asdfasdf');
print_r(date_get_last_errors());
?>

Die obigen Bespiele erzeugen folgende Ausgabe:

Array
(
   [warning_count] => 1
   [warnings] => Array
       (
           [6] => Double timezone specification
       )

   [error_count] => 1
   [errors] => Array
       (
           [0] => The timezone could not be found in the database
       )

)

Die Indizes 6 und 0 in der Ausgabe des obigen Beispiels beziehen sich auf den Buchstaben in dem String, in dem der Fehler auftrat.

add a note add a note

User Contributed Notes 1 note

up
23
framework at photon-project dot com
10 years ago
DateTime::createFromFormat is smart to handle the cases where you input an invalid date, like April 31st, and convert it to May 1st. In some cases, you do not want this automatic smart handling of the dates for example in a user input form where you want to be sure that your user did input the date he wanted. To do that, you need to get access to the warnings, this method is the only way to do it:

<?php
$date
= DateTime::createFromFormat('Y-m-d', '1999-04-31');
print
$date->format('Y-m-d') . PHP_EOL;
print_r(DateTime::getLastErrors());
?>

The output is:

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

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

)

So, here you can see, you have a warning because the date was invalid, but not an error because PHP was smart enough to convert it into a valid date. It is then up to you to do something with this information.
To Top