Я получаю результат выполнения 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()
Это определенно не самое изящное решение, я бы предложил предложить переработку базы данных (создать новый столбец, запустить скрипт для чтения каждой записи, сгенерировать новую дату, затем ввести ее, удалить старое поле даты, а затем переименовать новую , так что это нужно сделать только один раз).