DateTimeImmutable::getLastErrors

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

DateTimeImmutable::getLastErrorsDevuelve las advertencias y errores

Descripción

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

Devuelve un array de advertencias y errores encontrados mientras se analizaba una cadena de fecha/hora.

Parámetros

Esta función no tiene parámetros.

Valores devueltos

Devuelve un array que contiene información sobre advertencias y errores, o false si no hay ni advertencias ni errores.

Historial de cambios

Versión Descripción
8.2.0 Antes de PHP 8.2.0, esta función no devolvía false cuando no había advertencias ni errores. En su lugar, siempre devolvía la estructura de array documentada.

Ejemplos

Ejemplo #1 DateTimeImmutable::getLastErrors() example

<?php
try {
$date = new DateTimeImmutable('asdfasdf');
} catch (
Exception $e) {
// Solo para fines de demostración...
print_r(DateTimeImmutable::getLastErrors());

// La forma correcta de hacer esto con programación orientada a objetos es
// echo $e->getMessage();
}
?>

El resultado de los ejemplos sería:

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
       )

)

Los índices 6, y 0 en la salida de ejemplo se refieren al índice de caracteres en la cadena donde ocurrió el error.

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