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

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

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

378
26 сент. '08 в 2:10
источник поделиться
17 ответов

Чтобы преобразовать дату, полученную из 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/y g:i A", $time);
// $myFormatForView is something like: 01/31/14 1:05 PM

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

283
26 сент. '08 в 2:30
источник

Связанные вопросы


Похожие вопросы

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

$phpdate = strtotime( $mysqldate );
$mysqldate = date( 'Y-m-d H:i:s', $phpdate );

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

В строке $mysqldate = date( 'Y-m-d H:i:s', $phpdate ) используется эта временная метка и функция = "noreferrer" > date PHP

447
20 марта '11 в 9:06
источник

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

$oDate = new DateTime($row->createdate);
$sDate = $oDate->format("Y-m-d H:i:s");
100
26 сент. '08 в 7:31
источник
$valid_date = date( 'm/d/y g:i A', strtotime($date));

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

28
01 марта '13 в 16:02
источник

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

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

12
26 сент. '08 в 2:15
источник

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

$date = DateTime::createFromFormat('Y-m-d H:i:s', $mysql_source_date);
echo $date->format('m/d/y h:i a');
12
31 дек. '15 в 0:53
источник

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

$date = date("Y-m-d H:i:s",strtotime(str_replace('/','-',$date)))
10
14 сент. '12 в 11:58
источник

Чтобы правильно форматировать объект 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

9
31 мая '13 в 20:42
источник

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

SELECT DATE_FORMAT( `fieldname` , '%d-%m-%Y' ) FROM tablename
8
08 нояб. '11 в 23:07
источник

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

<?php
    echo date("m/d/y g:i (A)", $DB_Date_Field);
?>
7
26 сент. '08 в 2:16
источник

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

function datetime()
{
    return date( 'Y-m-d 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("Y-m-d H:i:s", strtotime($date_string));
}
5
23 янв. '14 в 22:49
источник
SELECT 
 DATE_FORMAT(demo.dateFrom, '%e.%M.%Y') as dateFrom,
 DATE_FORMAT(demo.dateUntil, '%e.%M.%Y') as dateUntil
FROM demo

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

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

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

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

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

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

5
09 июля '15 в 21:12
источник

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

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

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

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

или

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

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

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

3
26 сент. '08 в 2:57
источник

Это сработает...

echo date('m/d/y H:i (A)',strtotime($data_from_mysql));
1
12 марта '14 в 9:11
источник

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

return date("F j, Y g:i a", strtotime(substr($datestring, 0, 15)))
1
23 апр. '10 в 4:56
источник

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

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

PubDate - столбец в MySQL.

0
21 нояб. '09 в 22:12
источник
$date = "'".date('Y-m-d H:i:s', strtotime(str_replace('-', '/', $_POST['date'])))."'";
-1
02 дек. '13 в 16:00
источник

Посмотрите другие вопросы по меткам или Задайте вопрос