(PHP 5 >= 5.5.0, PHP 7, PHP 8)
DateTimeImmutable::guetLastErrors — Returns the warnings and errors
Returns an array of warnings and errors found while parsing a date/time string.
This function has no parameters.
Returns array containing info about warnings and errors, or
false
if there
are neither warnings nor errors.
| 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.
|
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
(
)
)
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)