Я не уверен, что возможно отключить эту функцию, но вы можете проверить , если это произошло:
$date = \DateTimeImmutable::createFromFormat($format, $dateString);
if(!$date || ($date->format($format) !== $dateString)) {
throw new InvalidDateException($dateString);
}
То, что мы делаем здесь, проверяет предоставленную строку даты по дате, которая была создана из этой строки даты, это укажет нам, произошло ли, как вы выразились, «опрокидывание».
Это потребует некоторой адаптации для работы с вашей базой кода, но, надеюсь, что даст вам общий подход к работе?