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)DateTimeImmutable::getLastErrors
Почист и полокален преглед на PHP референцата, со задржана структура од PHP.net и подобра читливост за примери, секции и белешки.
DateTimeImmutable::getLastErrors
Референца за `datetimeimmutable.getlasterrors.php` со подобрена типографија и навигација.
DateTimeImmutable::getLastErrors
Распакување на вгнездени низи
DateTimeImmutable::getLastErrors — Враќа предупредувања и грешки
= NULL
Враќа низа од предупредувања и грешки пронајдени при парсирање на низа за датум/време.
Параметри
Оваа функција нема параметри.
Вратени вредности
Враќа низа што содржи информации за предупредувања и грешки, или false ако нема ниту предупредувања ниту грешки.
Дневник на промени
| Верзија | = NULL |
|---|---|
| 8.2.0 |
Пред PHP 8.2.0, оваа функција не враќаше false
кога немаше предупредувања или грешки. Наместо тоа, секогаш ќе ја враќаше документираната структура на низата.
|
Примери
Пример #1 Превртените датуми може да се откријат со проверка за предупредувања користејќи 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();
}
?>Пример #1 Пример што покажува затворачка ознака што го опфаќа последниот нов ред
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
)
)
Failed to parse time string (asdfasdf) at position 0 (a): The timezone could not be found in the database
Индексите 6 и 0 во примерниот излез се однесуваат на индекс на карактер во низата каде што настанала грешката.
Пример #2 Откривање на превртени датуми
<?php
$date = DateTimeImmutable::createFromFormat('!Y-m-d', '2020-02-30');
print_r(DateTimeImmutable::getLastErrors());Пример #1 Пример што покажува затворачка ознака што го опфаќа последниот нов ред
Array
(
[warning_count] => 1
[warnings] => Array
(
[10] => The parsed date was invalid
)
[error_count] => 0
[errors] => Array
(
)
)