Что самый простой путь состоит в том, чтобы отформатировать метку времени от SQL в PHP?

RequestContext реализует интерфейс словаря. Это - это то же самое, что передано из представления, которое вы обычно используете в шаблоне. Вы просто получаете доступ к своим предметам, как и любой другой словарь, и context['obj'] будет работать нормально.

10
задан Peter Mortensen 21 May 2011 в 16:33
поделиться

8 ответов

Вы могли использовать 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;
22
ответ дан 3 December 2019 в 14:07
поделиться

Я склонен делать форматирование даты в SQL, как ответ Aron. Хотя для дат PHP, я предпочитаю использовать объект DateTime (PHP5 +) по дате:

$timestamp = new DateTime($row['my_timestamp']);
echo $timestamp->format('F j, Y') . '<br />';
echo $timestamp->format('F j, Y g:ia');
10
ответ дан 3 December 2019 в 14:07
поделиться

Вы хотите дату () функция.

Если у Вас есть столбец DATE или DATETIME, можно использовать ВЫБОР UNIX_TIMESTAMP (mycolumn) AS mycolumn для преобразования его в метку времени Unix, чтобы функция даты использовала.

2
ответ дан 3 December 2019 в 14:07
поделиться

Необходимо определенно использовать класс DateTime (или любой дом вырастил эквивалентный класс), по функции de Date, и не используют метки времени:

  • Метка времени не работает хорошо во всех средах для дат до 1970 - если Вы имеете дело со днями рождения, Вы полагаетесь на код, который может повредиться на некоторых серверах
  • Также очень остерегайтесь использования strftime, оно похоже на хорошую функцию, но это очень ненадежно, поскольку оно зависит от setlocale, который всего процесса. То, что это означает, - то, что, если Ваш сервер является полем окон, у Вас есть один процесс на процессор, и затем остальное является многопоточным - другими словами, один setlocale в одном сценарии будет влиять на другие сценарии на том же процессоре - очень противный!

В конце дня не полагайтесь на метки времени, если Вы не находитесь на английском только среда и соглашение с датами между 1970 и 2032 только...!

2
ответ дан 3 December 2019 в 14:07
поделиться

Если Вам индексировали Ваши таблицы на том поле даты, и Вы используете mysql функцию формата данных в своем вызове.. (т.е. Избранный DATE_FORMAT (my_timestamp, '%M %d, %Y) AS my_time), это уничтожит Вашу индексацию. Что-то для учета. Мы видели, что поразительные увеличения скорости в удалении всего функционирования от наших sql операторов и разрешения php обрабатывают все это. Функционирование, такие как форматирование дат и простой математики

1
ответ дан 3 December 2019 в 14:07
поделиться

Имейте базу данных, делают форматирование для Вас. Это намного менее восприимчиво к ошибке, потому что Вы не читаете строку и преобразовываете ее. Вместо этого база данных идет от своего собственного формата до строки.

0
ответ дан 3 December 2019 в 14:07
поделиться

У Вас есть выбор. Можно использовать дату () функция в PHP и обработать вывод от MySQL, или можно использовать date_format () функция в MySQL и иметь его, возвращают отформатированную строку для начала.

По моему опыту, то, что это действительно не имеет значения, который Вы используете, но ПОСЛЕДОВАТЕЛЬНЫ. У них есть различные параметры форматирования, поэтому если Вы будете использовать обоих в данном приложении, то Вы проведете много времени, пытаясь помнить, дает ли 'W' Вам имя дня недели или недели года.

0
ответ дан 3 December 2019 в 14:07
поделиться

Я использую:

дата ("F j, Y", strtotime ($row ['my_timestamp']))

или можно изменить ВЫБОР на: DATE_FORMAT (поле', %d %M, %Y') как дата и время

0
ответ дан 3 December 2019 в 14:07
поделиться
Другие вопросы по тегам:

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