PHP 8.4.2 Released!

DateTimeImmutable::getLastErrors

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

DateTimeImmutable::getLastErrorsReturns the warnings and errors

Опис

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

Returns an array of warnings and errors found while parsing a date/time string.

Параметри

У цієї функції немає параметрів.

Значення, що повертаються

Returns array containing info about warnings and errors, or false if there are neither warnings nor errors.

Журнал змін

Версія Опис
8.2.0 Before PHP 8.2.0, this function did not return false when there were no warnings or errors. Instead, it would always return the documented array structure.

Приклади

Приклад #1 DateTimeImmutable::getLastErrors() example

<?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();
}
?>

Подані вище приклади виведуть:

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
       )

)

The indexes 6, and 0 in the example output refer to the character index in the string where the error occurred.

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