PHP Conference Nagoya 2025

DateTimeImmutable::getLastErrors

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

DateTimeImmutable::getLastErrorsRetourne les alertes et erreurs

Description

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

Retourne un tableau des alertes et erreur trouvés lors de l'analyse d'une chaîne date/heure.

Liste de paramètres

Cette fonction ne contient aucun paramètre.

Valeurs de retour

Retourne un tableau contenant les informations à propos des alertes et erreurs, ou false s'il y a ni alertes ni erreurs.

Historique

Version Description
8.2.0 Antérieur à PHP 8.2.0, cette fonction ne retournait pas false en l'absence d'avertissement ou d'erreur. Au lieu de cela, elle renvoyait toujours la structure de tableau documentée.

Exemples

Exemple #1 Exemple de DateTimeImmutable::getLastErrors()

<?php
try {
$date = new DateTimeImmutable('asdfasdf');
} catch (
Exception $e) {
// For demonstration purposes only...
print_r(DateTimeImmutable::getLastErrors());

// The real object-oriented way to do this is
// echo $e->getMessage();
}
?>

Les exemples ci-dessus vont afficher :

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
       )

)

Les index 6, et 0 dans la sortie de l'exemple réfère à l'index du caractère dans la chaîne où l'erreur c'est produite.

add a note

User Contributed Notes 1 note

up
0
_mittens
1 year 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