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:00foreach(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 resetvar_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 resetvar_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)