DateTimeImmutable::getLastErrors

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

DateTimeImmutable::getLastErrors返回警告和错误

说明

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

返回一个数组,其中包含解析日期/时间字符串时发现的警告和错误。

参数

此函数没有参数。

返回值

返回包含有关警告和错误信息的数组,如果既没有警告也没有错误,则返回 false

变更日志

版本 说明
8.2.0 在 PHP 8.2.0 之前,此函数在没有警告或错误时不会返回 false。相反,它始终会返回文档中记录的数组结构。

示例

示例 #1 DateTimeImmutable::getLastErrors() 示例

<?php
try {
$date = new DateTimeImmutable('asdfasdf');
} catch (
Exception $e) {
// 仅用于演示目的...
print_r(DateTimeImmutable::getLastErrors());

// 使用面向对象的方法进行操作的正确方式是
// 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
       )

)

示例输出中的索引 6 和 0 指的是字符串中发生错误的字符索引。

添加说明

用户贡献的说明 1 条说明

0
_mittens
9 个月前
如果你好奇内部数组何时重置(来自 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 $_)
// 内部错误不会重置
var_dump( join(DateTimeImmutable::getLastErrors()['warnings']) ); // 解析的日期无效

$date1 = DateTimeImmutable::createFromFormat('!Y-m-d', '2020-12-31');
var_dump($date1->format('c')); // 2020-12-31T00:00:00+00:00

// 内部错误已重置
var_dump( empty(DateTimeImmutable::getLastErrors()['warnings']) ); // true

$date2 = DateTimeImmutable::createFromFormat('!Y-m-d', '2020-31-31');
var_dump( join(DateTimeImmutable::getLastErrors()['warnings']) ); // 解析的日期无效
$date3 = new DateTimeImmutable('2023-12-31T00:00:00.000000Z');

// 内部错误已重置
var_dump( empty(DateTimeImmutable::getLastErrors()['warnings']) ); // true
?>

输出
string(25) "2022-07-31T00:00:00+00:00"
string(27) "解析的日期无效"
string(27) "解析的日期无效"
string(27) "解析的日期无效"
string(25) "2020-12-31T00:00:00+00:00"
bool(true)
string(27) "解析的日期无效"
bool(true)
To Top