CakeFest 2024: The Official CakePHP Conference

DateTimeImmutable::getLastErrors

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

DateTimeImmutable::getLastErrorsLiefert die Warnungen und Fehler

Beschreibung

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

Gibt ein Array von Warnungen und Fehlern zurück, die beim Parsen einer Datum/Zeit-Zeichenkette gefunden wurden.

Parameter-Liste

Diese Funktion besitzt keine Parameter.

Rückgabewerte

Gibt ein Array zurück, das Informationen über Warnungen und Fehler enthält, oder false, wenn es weder Warnungen noch Fehler gibt.

Changelog

Version Beschreibung
8.2.0 Vor PHP 8.2.0 gab diese Funktion nicht false zurück, wenn es keine Warnungen oder Fehler gab. Stattdessen gab sie immer die dokumentierte Array-Struktur zurück.

Beispiele

Beispiel #1 DateTimeImmutable::getLastErrors()-Beispiel

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

// Wirklich objektorientiert geht dies folgendermaßen
// echo $e->getMessage();
}
?>

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 Beispielausgabe beziehen sich auf den Zeichenindex in der Zeichenkette, in der der Fehler aufgetreten ist.

add a note

User Contributed Notes 1 note

up
0
_mittens
4 months ago
If you are curious as to when the internal array gets resetted (from https://onlinephp.io/c/3ee35):

<?php

$date0
= DateTimeImmutable::createFromFormat('!Y-m-d', '2020-31-31');
var_dump($date0->format('c')); // 2022-07-31T00:00:00+00:00

foreach(range(0,2) as $_)
// The internal error won't reset
var_dump( join(DateTimeImmutable::getLastErrors()['warnings']) ); // The parsed date was invalid

$date1 = DateTimeImmutable::createFromFormat('!Y-m-d', '2020-12-31');
var_dump($date1->format('c')); // 2020-12-31T00:00:00+00:00

// The internal error did reset
var_dump( empty(DateTimeImmutable::getLastErrors()['warnings']) ); // true

$date2 = DateTimeImmutable::createFromFormat('!Y-m-d', '2020-31-31');
var_dump( join(DateTimeImmutable::getLastErrors()['warnings']) ); // The parsed date was invalid
$date3 = new DateTimeImmutable('2023-12-31T00:00:00.000000Z');

// The internal error did reset
var_dump( empty(DateTimeImmutable::getLastErrors()['warnings']) ); // true
?>

Output:
string(25) "2022-07-31T00:00:00+00:00"
string(27) "The parsed date was invalid"
string(27) "The parsed date was invalid"
string(27) "The parsed date was invalid"
string(25) "2020-12-31T00:00:00+00:00"
bool(true)
string(27) "The parsed date was invalid"
bool(true)
To Top