Вопрос

Я хочу создать дату с конкретным форматом для, например, 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]));
Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top