К сожалению, я не могу использовать 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 не ожидает даты в таком формате.