Учитывая, что некоторые даты действительны, но могут указывать на две разные фактические даты, ни одна функция никогда не сможет "угадать" правильный формат в любое время ...
Чтобы помочь с этим, с PHP> = 5.3 была добавлена новая функция: date_create_from_format
- но она не существует с PHP
(См. Также DateTime::createFromFormat
)
Тем не менее, в приведенном вами примере возможный источник проблем - 1957 год: PHP обычно работает с метками времени UNIX , когда дело доходит до дат ...
И, по крайней мере, в 32-битных системах, они могут представлять даты только между 1970 и 2038 - так как они подсчитывают количество секунд с 1970-01-01.
Чтобы избежать этой проблемы, часто рекомендуется использовать класс DateTime
, с которым ( цитируем ) :
Информация о дате и времени
внутренне хранится как 64-битное число
так что все мыслимые даты (в том числе
отрицательные годы) поддерживаются.
диапазон составляет около 292 миллиардов лет
в прошлом к тому же в будущем.
(Это не решит проблемы с синтаксическим анализом в PHP <5.3; но решит проблему с диапазоном дат ...) </em>