Дата времени создать из формата
-
30-09-2019 - |
Вопрос
Я хочу создать дату с конкретным форматом для, например, 03-20-2010, имеют формат Mdy, но дата функции не понимают этой даты и возвращает неправильную дату
$date = date("Y-m-d", strtotime("03-20-2010"));
Приведенный выше код возвращает неправильную дату, в чем причина этого и как избежать неправильного результата? Немногие форматы, которые я хочу дата функции для распознавания, являются «y / m / d», «M / D / Y», «F D, Y», «M D, Y».
Решение
Strtotime не будет распознавать американский стиль заказа, разделенный «- ', но если вы используете сепаратор' / ', он будет работать просто хорошо.
$date = date("Y-m-d", strtotime(str_replace('-', '/', "03-20-2010")));
Как отмечает Pekka, лучше, если ваш код Code объявляет формат, который вы используете.
Другие советы
Достаточно весеннее, ваш титул вопроса содержит точный Решение проблемы!
Использовать DateTime::createFromFormat
. Отказ (Примечание: требуется PHP> = 5.3)
Это позволяет вам указать точный формат даты ожидания, так что нет ничего strtotime()
с двусмысленностью / англо-американской смещением.
Это должно работать:
$date = DateTime::createFromFormat("Y-m-d", "2010-03-20");
Вы можете получить временную метку с MKTIME и использовать этот меток
$exact_time = "03-20-2010";
$exploded_et = explode("-",$exact_time);
$date = date("Y-m-d",mktime(0,0,0,$exploded_et[0],$exploded_et[1],$exploded_et[2]));