Я использую плагин timeago (http://timeago.yarp.com/), он отлично работает на моем localhost, у которого MySQL хранит свои данные в метке времени UTC, которую должен работать плагин.
Однако при загрузке моего проекта на сервер появляется в нем база данных MySQL другого типа. Я получаю временную метку вроде этого: «Четверг, 24 февраля 2011 г. 16:29» с сервера, тогда как мне нужно что-то вроде этого: «2008-07-17T09: 24: 17Z»
Любая идея, как преобразовать временные метки с помощью php?
Изменить. Временные метки, хранящиеся в неправильном формате в базе данных, автоматически генерируются mysql.
Изменить 2: это поле типа «метка времени» и по умолчанию установлено значение «CURRENT_TIMESTAMP», когда строка вставлена в db
Вы получаете странную строку для MySQL, уверены ли вы, что она находится в поле Datetime?
Вы можете получить временную метку UNIX (секунды с эпохи) из MySQL со следующей функцией , этот формат широко принят на нескольких платформах:
SELECT UNIX_TIMESTAMP( table.datetime_field ) as datetime_field FROM table
Используя некоторые функции PHP, вы можете преобразовать их в желаемый формат:
echo date( 'c', $record[ 'datetime_field' ] );
Я думаю, этого будет достаточно для вашей проблемы.
SELECT UNIX_TIMESTAMP('your_date') AS your_date;
в запросе и
$date('whatever_format', $timestamp_from_mysql);
в php
Внутри [колонка timestamp MySQL] [1] сохраняется как [UTC] [2], но при выборе даты MySQL автоматически преобразует ее в текущий часовой пояс сеанса.
При хранении даты MySQL будет считать, что дата находится в текущем часовом поясе сессии и конвертирует его в UTC для хранения.
независимо от того, в какой временной зоне находится текущий сеанс MySQL:
SELECT CONVERT_TZ(`timestamp_field`, @@session.time_zone, '+00:00') AS `utc_datetime` FROM `table_name`
Вы также можете установить часовой пояс или глобальный или текущий часовой пояс сессии в UTC, а затем выбрать временную метку:
SELECT `timestamp_field` FROM `table_name`
Я сделал чит-коды здесь: Должен ли MySQL установить часовой пояс в UTC?