Каков самый простой способ отформатировать временную метку SQL в PHP?
Каков самый простой и быстрый способ заполнить приведенный ниже код PHP таким образом, чтобы результат был в удобном для пользователя формате (например, "27 октября 2006 г." )?
$result = mysql_query("SELECT my_timestamp FROM some_table WHERE id=42", $DB_CONN);
$row = mysql_fetch_array($result);
$formatted_date = ???($row['my_timestamp']);
echo $formatted_date;
Ответы
Ответ 1
Вы можете использовать MySQL для этого,
$result = mysql_query("SELECT DATE_FORMAT(my_timestamp, '%M %d, %Y) AS my_timestamp FROM some_table WHERE id=42", $DB_CONN);
$row = mysql_fetch_array($result);
$formatted_date = $row['my_timestamp'];
echo $formatted_date;
Или используйте PHP,
$result = mysql_query("SELECT my_timestamp FROM some_table WHERE id=42", $DB_CONN);
$row = mysql_fetch_array($result);
$formatted_date = strftime('%B %d, %y', $row['my_timestamp']);
echo $formatted_date;
Ответ 2
Я обычно делаю форматирование даты в SQL, например Aron answer. Хотя для дат PHP я предпочитаю использовать объект DateTime (PHP5 +) поверх date:
$timestamp = new DateTime($row['my_timestamp']);
echo $timestamp->format('F j, Y') . '<br />';
echo $timestamp->format('F j, Y g:ia');
Ответ 3
Вам нужна функция date().
Если у вас есть столбец DATE или DATETIME, вы можете использовать SELECT UNIX_TIMESTAMP (mycolumn) AS mycolumn, чтобы преобразовать его в временную метку unix для функции даты.
Ответ 4
Вы должны определенно использовать класс DateTime (или любой дом, который стал эквивалентным классом), над функцией Date, а не использовать временные метки:
- Временная метка не работает хорошо во всех средах для дат до 1970 года - если вы занимаетесь днями рождения, вы полагаетесь на код, который может быть поврежден на некоторых серверах.
- Будьте очень осторожны в использовании strftime, он выглядит как хорошая функция, но он очень неоправдан, поскольку он зависит от setlocale, который является общесистемным. Это означает, что если ваш сервер является окном, у вас есть один процесс на процессор, а затем остальное многопоточное - другими словами, один setlocale в одном script будет влиять на другие скрипты на одном процессоре - очень противный!
В конце дня не полагайтесь на отметки времени, если только вы не находитесь в среде только на английском языке и имеете дело только с периодами между 1970 и 2032 годами...!
Ответ 5
Если вы указали свои индексы в этом поле даты, и вы используете функцию формата данных mysql в своем вызове.. (т.е. SELECT DATE_FORMAT (my_timestamp, '% M% d,% Y) AS my_time), он уничтожит ваше индексирование. Что-то нужно иметь в виду. Мы видели резкое увеличение скорости при удалении всех функций из наших операторов sql и позволяя php обрабатывать все это.
Функционирование, такое как даты форматирования и простая математика
Ответ 6
Я использую:
date ( "F j, Y", strtotime ($ row ['my_timestamp']))
или вы можете изменить SELECT на: DATE_FORMAT (поле, '% d% M,% Y') в качестве даты и времени
Ответ 7
У вас есть выбор. Вы можете использовать функцию date() в PHP и обрабатывать выходные данные MySQL, или вы можете использовать date_format() в MySQL и вернуть ему форматированную строку.
По моему опыту, на самом деле не имеет значения, что вы используете, но БУДЬТЕ СОГЛАСНЫ. Они имеют разные параметры форматирования, поэтому, если вы используете оба в данном приложении, вы потратите много времени, пытаясь запомнить, если "W" дает вам имя дня недели или недели года.
Ответ 8
Создайте базу данных для форматирования. Это гораздо менее восприимчиво к ошибке, потому что вы не читаете строку и не конвертируете ее. Вместо этого база данных переходит из собственного формата в строку.