CascadiaPHP 2024

DateTimeImmutable::getLastErrors

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

DateTimeImmutable::getLastErrorsRetorna os avisos e erros

Descrição

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

Retorna um array de avisos e erros encontrados durante a análise de uma string de data/hora.

Parâmetros

Esta função não possui parâmetros.

Valor Retornado

Retorna um array contendo informação sobre avisos e erros, ou false se não houver nem avisos nem erros.

Registro de Alterações

Versão Descrição
8.2.0 Antes do PHP 8.2.0, esta função não retornava false quando não havia warnings ou erros. Em vez disso, ela sempre retornaria a estrutura de array documentada.

Exemplos

Exemplo #1 Exemplo da função DateTimeImmutable::getLastErrors()

<?php
try {
$date = new DateTimeImmutable('asdfasdf');
} catch (
Exception $e) {
// Apenas para propósito de demonstração...
print_r(DateTimeImmutable::getLastErrors());

// A maneira real orientada a objeto de se fazer isto é
// echo $e->getMessage();
}
?>

Os exemplos acima produzirão:

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
       )

)

Os índices 6 e 0 na saída do exemplo referem-se ao índice do caractere no string onde o erro ocorreu.

add a note

User Contributed Notes 1 note

up
0
_mittens
8 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