Преобразование из MySQL datetime в другой формат с помощью PHP

У меня есть столбец datetime в MySQL.

Как преобразовать его в дисплей как mm / dd / yy H: M (AM / PM) с помощью PHP?

Если вы ищете способ нормализации даты в формате MySQL, используйте следующие

 $phpdate = strtotime( $mysqldate ); $mysqldate = date( 'Ymd H:i:s', $phpdate ); 

Строка $phpdate = strtotime( $mysqldate ) принимает строку и выполняет серию эвристик, чтобы превратить эту строку в временную метку unix.

Строка $mysqldate = date( 'Ymd H:i:s', $phpdate ) использует эту метку времени и функцию date PHP, чтобы превратить эту метку времени в стандартный формат даты MySQL.

( Примечание редактора . Этот ответ здесь из-за оригинального вопроса с запутанной формулировкой и общей полезности Google, этот ответ был предоставлен, даже если он не ответил прямо на вопрос, который существует сейчас)

Чтобы преобразовать дату, полученную из MySQL, в запрошенный формат ( mm/dd/yy H:M (AM/PM) ):

 // $datetime is something like: 2014-01-31 13:05:59 $time = strtotime($datetimeFromMysql); $myFormatForView = date("m/d/yg:i A", $time); // $myFormatForView is something like: 01/31/14 1:05 PM 

Для настройки формата см. Параметры форматирования даты PHP .

Если вы используете PHP 5, вы также можете попробовать

 $oDate = new DateTime($row->createdate); $sDate = $oDate->format("Ymd H:i:s"); 
 $valid_date = date( 'm/d/yg:i A', strtotime($date)); 

Ссылка: http://php.net/manual/en/function.date.php

Наконец, правильное решение для PHP 5.3 и выше:

 $date = DateTime::createFromFormat('Ymd H:i:s', $mysql_source_date); echo $date->format('m/d/yh:i a'); 

Более простым способом было бы форматировать дату непосредственно в запросе MySQL вместо PHP. См. Руководство пользователя MySQL для DATE_FORMAT .

Если вы предпочитаете делать это на PHP, вам нужна функция даты , но сначала вам нужно будет преобразовать значение вашей базы данных в метку времени.

Забудь все. Просто используйте:

 $date = date("Ymd H:i:s",strtotime(str_replace('/','-',$date))) 

Чтобы правильно форматировать объект DateTime в PHP для хранения в MySQL, используйте стандартизованный формат, который использует MySQL, а именно ISO 8601 .

PHP имеет этот формат, который хранится как константа начиная с версии 5.1.1, и я настоятельно рекомендую использовать его, а не вручную набирать строку каждый раз.

 $dtNow = new DateTime(); $mysqlDateTime = $dtNow->format(DateTime::ISO8601); 

Это и список других констант PHP DateTime доступны по адресу http://php.net/manual/en/class.datetime.php#datetime.constants.types.

Это должно форматировать поле в SQL-запросе:

 SELECT DATE_FORMAT( `fieldname` , '%d-%m-%Y' ) FROM tablename 

Используйте функцию даты :

 <?php echo date("m/d/yg:i (A)", $DB_Date_Field); ?> 

В зависимости от вашей конфигурации datetime MySQL. Обычно: 2011-12-31 07:55:13 формат. Эта очень простая функция должна делать магию:

 function datetime() { return date( 'Ymd H:i:s', time()); } echo datetime(); // display example: 2011-12-31 07:55:13 

Или немного больше, чтобы ответить на вопрос.

 function datetime($date_string = false) { if (!$date_string) { $date_string = time(); } return date("Ymd H:i:s", strtotime($date_string)); } 
 SELECT DATE_FORMAT(demo.dateFrom, '%e.%M.%Y') as dateFrom, DATE_FORMAT(demo.dateUntil, '%e.%M.%Y') as dateUntil FROM demo 

Если вы не хотите изменять каждую функцию в вашем PHP-коде, чтобы отобразить ожидаемый формат даты, измените его в исходной базе данных.

Важно указать строки с оператором as, как в примере выше (как dateFrom, as dateUntil). Имена, которые вы там пишете, – это имена, строки будут вызываться в вашем результате.

Результат этого примера будет

[День месяца, числовое число (0..31)]. [Название месяца (январь .. декабрь)]. [Год, число, четыре цифры]

Пример: 5.August.2015

Измените точки с помощью разделителя выбора и проверьте функцию DATE_FORMAT (дата, формат) для большего количества форматов даты.

Вы также можете вернуть запрос в качестве отметки времени Unix. Это избавит вас от необходимости вызывать strtotime() и делает вещи немного менее интенсивными на стороне PHP …

 select UNIX_TIMESTAMP(timsstamp) as unixtime from the_table where id = 1234; 

Затем в PHP просто используйте функцию date() чтобы отформатировать ее, как вам хотелось бы.

 <?php echo date('l jS \of FY h:i:s A', $row->unixtime); ?> 

или

 <?php echo date('F j, Y, g:i a', $row->unixtime); ?> 

Мне нравится этот подход в отличие от использования функции DATE_FORMAT MySQL , поскольку он позволяет повторно использовать один и тот же запрос для захвата данных и позволяет изменять форматирование на PHP.

Досадно иметь два разных запроса, чтобы изменить способ отображения даты в пользовательском интерфейсе.

У вас могут быть проблемы с датами, не возвращенными в Unix Timestamp, поэтому это работает для меня …

 return date("F j, Y g:ia", strtotime(substr($datestring, 0, 15))) 

Это будет работать …

 echo date('m/d/y H:i (A)',strtotime($data_from_mysql)); 

Используя PHP версии 4.4.9 и MySQL 5.0, это сработало для меня:

 $oDate = strtotime($row['PubDate']); $sDate = date("m/d/y",$oDate); echo $sDate 

PubDate – это столбец в MySQL .

 $date = "'".date('Ymd H:i:s', strtotime(str_replace('-', '/', $_POST['date'])))."'";