Многие функции PHP внутренне зависят от стандартной реализации библиотеки C, и вполне вероятно, что это случай strtotime (). Это означает, что точное поведение зависит от операционной системы, в которой работает PHP.
Я думаю, что лучше не полагаться на strtotime () для обнаружения неверных дат.
Как примечание ... Я предполагаю, что вы используете MySQL. Можно настроить его так, чтобы он не принимал недопустимые даты:
NO_ZERO_DATE