如果您好奇內部陣列何時重置(來自 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
?>
輸出
字串(25) "2022-07-31T00:00:00+00:00"
字串(27) "解析的日期無效" 字串(13) "The parsed date was invalid"
字串(27) "解析的日期無效"
字串(13) "The parsed date was invalid"
字串(27) "解析的日期無效"
字串(13) "The parsed date was invalid"
字串(25) "2020-12-31T00:00:00+00:00"
布林(true)
字串(27) "解析的日期無效"
字串(13) "The parsed date was invalid"
布林(true)