Функции даты и времени в PHP и MySQL - PullRequest
0 голосов
/ 26 ноября 2011

Дата и время хранятся в моей базе данных как тип данных MySQL DATETIME. При вставке в базу данных я использую следующую переменную PHP

$serverTime = strftime("%Y-%m-%d %H:%M:%S",$_SERVER['REQUEST_TIME']);

Пример DATETIME, хранящийся в базе данных: 2011-11-26 01:00:27

Теперь моему веб-сайту нужно, чтобы дата отображалась в следующем формате: November 26, 2011 (время не требуется)

Как я могу это сделать? Я пытаюсь ниже в PHP, но я получаю неправильный вывод.

echo strftime("%B %d, %Y",$serverTime)

Ответы [ 2 ]

5 голосов
/ 26 ноября 2011

Функция PHP strftime () хочет, чтобы ввод представлял собой 32-разрядное целое время, то есть количество секунд с 1970-01-01 00:00:00.

Формат вывода по умолчанию для даты и времени MySQL: ГГГГ-ММ-ДД ЧЧ: ММ: СС. Когда вы используете эту строку в PHP, первые цифры преобразуются в целое число 2011, которое интерпретируется как первый час 1970-01-01.

Таким образом, вы должны получить дату и время из MySQL в другом формате. Выбор:

  • UNIX_TIMESTAMP (datetime_column) для извлечения даты и времени в виде целого числа, которое вы можете передать PHP-функции strftime ().

  • DATE_FORMAT ('datetime_column', '% M% d,% Y') для форматирования даты и времени в виде строки, и тогда вам не нужно использовать strftime () для форматирования это.

1 голос
/ 26 ноября 2011

Хотя я бы рекомендовал полностью SQL-подход, вы можете использовать PHP DateTime класс для обработки вашей строки в PHP (при условии, что вы используете PHP> 5.3):

// Pick a valid TimeZone
$date_obj = DateTime::createFromFormat( 'Y-m-d H:i:s', '2011-11-26 01:00:27', new DateTimeZone( 'America/New_York'));
echo $date_obj->format('F d, Y');

Демо

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...