PHP – Изменение формата даты

Я получаю результат выполнения SQL-запроса im, который выводит следующую дату ($ mydate) (05/02/2011) …. Он отформатирован как dd / mm / yyyy … Когда я запускаю

date('l jS \of F Y',strtotime($mydate)) 

Я получаю совершенно отличную дату от того, что вводится, я собираю это потому, что я не использовал формат mm / dd / yyyy.

Как я могу поменять его, чтобы он работал правильно?

Приветствия.

Вы можете использовать strptime() для анализа формата даты / времени. Вы также можете преобразовать строку даты в YYYY-MM-DD, которая всегда корректно обрабатывается strtotime. Например:

 $date = implode('-', array_reverse(explode('/', $date))); 

Но я согласен с другими ответами. Сначала ознакомьтесь с настройками своей базы данных. Практически все базы данных могут напрямую выводить формат YYYY-MM-DD, и большинство из них будут делать это по умолчанию. Смотрите, почему у вас нет.

Интересно, почему ваша дата выходит из вашей БД как dd / mm / yyyy, какую БД вы используете? Если MySQL, поле DATE должно выводить YYYY-MM-DD, который будет корректно вести себя с помощью strtotime ().

Вы можете explode('/', $mydate) чтобы вручную разделить dd, mm и yyyy, а затем восстановить новую строку даты или напрямую использовать полученные числа с помощью mktime ().

Вот список форматов, которые strtotime() .

Какой SQL выводит такой странный формат даты? Или вы сами форматировали дату?

Если он всегда входит в этот формат, вы можете использовать

 $newtime = preg_replace("/\d\d\/\d\d/\d\d\d\d/", "$3/$2/$1", $date); 

Чтобы преобразовать его в yyyy / mm / dd, просто подключите его к strtotime()

Это определенно не самое изящное решение, я бы предложил предложить переработку базы данных (создать новый столбец, запустить скрипт для чтения каждой записи, сгенерировать новую дату, затем ввести ее, удалить старое поле даты, а затем переименовать новую , так что это нужно сделать только один раз).