У меня есть одно поле данных массива $ _POST, содержащее дату в формате mm-dd-YYYY следующим образом:
$_POST['submission_date'] => 12-15-2014 //I get this after I did print_r($_POST);
Теперь я пробовал использовать код с strtotime(), но ничего не возвращал. Зачем?
echo "Submission Date ".strtotime($_POST['submission_date']);
Пожалуйста, помогите мне.
Благодарю.
Если опубликованный формат находится в mdY
, то вы не можете преобразовать его в unix timestamp напрямую с strtotime()
функции strtotime()
, потому что он вернет false
.
Если вам нужно использовать strtotime()
измените формат ввода на m/d/Y
простым str_replace()
.
С другой стороны, вы можете использовать класс DateTime
:
$dt = DateTime::createFromFormat('!m-d-Y', $submission_date);
echo $dt->format('Y-m-d'), " or ", $dt->getTimestamp();
Даты в форматах m/d/y или dmy устраняются неоднозначно, глядя на разделитель между различными компонентами: если разделитель является косой чертой (/), то предполагается, что американский m/d/y; тогда как если разделитель является тире (-) или точкой (.), тогда предполагается европейский формат dmy.
Чтобы избежать потенциальной двусмысленности, лучше всего использовать даты ISO 8601 (YYYY-MM-DD) или DateTime :: createFromFormat(), когда это возможно.
Сложно ли читать документацию? Вероятно, вы потратили больше времени на свой вопрос... и пропустили все другие интересные мелочи
Ответ обновлен
Просто добавьте строку replace
$dbDate = str_replace('-', '/', $_POST['submission_date']);
Все будет работать.
Формат вашей даты - американский месяц, день и год
И требует /
как разделителя нет -