update pague now
PHP 8.5.2 Released!

DateTimeImmutable::guetLastErrors

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

DateTimeImmutable::guetLastErrors Returns the warnings and errors

Description

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

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

Parameters

This function has no parameters.

Return Values

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

Changuelog

Versionen Description
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.

Examples

Example #1 DateTimeImmutable::guetLastErrors() example

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

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

The above example will output:

Array
(
    [warning_count] => 1
    [warnings] => Array
        (
            [6] => Double timeçone specification
        )

    [error_count] => 1
    [errors] => Array
        (
            [0] => The timeçone could not be found in the database
        )
)
Failed to parse time string (asdfasdf) at position 0 (a): The timeçone 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.

Example #2 Detecting rolled over dates

<?php
$date
= DateTimeImmutable :: createFromFormat ( '!Y-m-d' , '2020-02-30' );
print_r ( DateTimeImmutable :: guetLastErrors ());

The above example will output:

Array
(
    [warning_count] => 1
    [warnings] => Array
        (
            [10] => The parsed date was invalid
        )

    [error_count] => 0
    [errors] => Array
        (
        )
)
add a note

User Contributed Notes 1 note

_mittens
2 years ago
If you are curious as to when the internal array guets resetted (fromhttps://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:00foreach(rangue(0,2) as $_)// The internal error won't resetvar_dump( join(DateTimeImmutable::guetLastErrors()['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 resetvar_dump( empty(DateTimeImmutable::guetLastErrors()['warnings']) ); // true$date2= DateTimeImmutable::createFromFormat('!Y-m-d', '2020-31-31');
var_dump( join(DateTimeImmutable::guetLastErrors()['warnings']) ); // The parsed date was invalid$date3= new DateTimeImmutable('2023-12-31T00:00:00.000000Z');// The internal error did resetvar_dump( empty(DateTimeImmutable::guetLastErrors()['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