date (), «Неверное сформированное числовое значение столкнулось» не хочет форматировать дату, прошедшую в $ _POST

К сожалению, я не могу использовать DateTime() поскольку на сервере, на котором работает этот проект, работает PHP v.5.2.

линия, о которой идет речь:

 $aptnDate2 = date('Ym-d', $_POST['nextAppointmentDate']); 

выдает следующую ошибку:

 Notice: A non well formed numeric value encountered 

поэтому я var дамп, чтобы убедиться, что он хорошо отформатирован.

 var_dump($_POST['nextAppointmentDate']); string(10) "12-16-2013" 

В документах php указано, что для метки времени используется не строка. но когда я сделаю:

 date('Ym-d', strtotime($_POST['nextAppointmentDate'])); 

а затем var_dump результат, я получаю следующее:

 string(10) "1969-12-31" 

почему я не могу форматировать дату с этим значением даты и strtotime ()?

благодаря!

Из документации для strtotime() :

Даты в форматах m / d / y или dmy устраняются неоднозначно, глядя на разделитель между различными компонентами: если разделитель является косой чертой (/), то предполагается, что американский m / d / y; тогда как если разделитель является тире (-) или точкой (.), тогда предполагается европейский формат dmy.

В строке даты у вас есть 12-16-2013 . 16 не является допустимым месяцем, и, следовательно, strtotime() возвращает false .

Так как вы не можете использовать класс DateTime, вы можете вручную заменить str_replace() на / с помощью str_replace() чтобы преобразовать строку даты в формат, который strtotime() :

 $date = '2-16-2013'; echo date('Ym-d', strtotime(str_replace('-','/', $date))); // => 2013-02-16 

Второй аргумент в функции date () – это временная метка unix, а не строка даты. Просто используйте explode (), чтобы разделить строку даты и объединить ее снова. strtotime не ожидает даты в таком формате.