Я использовал PHP-метод strtotime (), чтобы принять поле даты в форме. Мне нравится, насколько он силен, как он примет «Завтра», «Следующий четверг» или (предположительно) любое представление даты и преобразует его в метку времени Unix.
Работает отлично - до вчерашнего дня. Кто-то ввел «2-4-10» и вместо регистрации 4 февраля 2010 года он записал 10 апреля 2002 года! Так что ожидалось Y-M-D вместо M-D-Y.
Я подумал, что, возможно, проблема в том, чтобы использовать год из двух цифр, поэтому мы попробовали еще раз с "2-4-2010". Это записано 2 апреля 2010 года! В этот момент я просто не понимаю, что делает strtotime (). PHP.net говорит, что ожидает американский формат даты на английском языке. С чего бы это тогда предполагать D-M-Y?
Есть ли способ обойти это? Или я должен прекратить использование strtotime ()?
Примечание: Я только что сделал тест. Когда вы используете косую черту вместо дефиса / тире, она отлично работает даже с 2/4/10. Почему на земле это имеет значение? И если это все, что нужно, нужно ли просто запустить str_replace ("-", "/", $ input) на входе формы перед передачей его в strtotime ()?