Преобразование метки времени MYSQL в ISO-8601 без смещения тимзоны - PullRequest
2 голосов
/ 11 июля 2011

Я пытаюсь использовать timeago (http://timeago.yarp.com/) и нашел решения для преобразования меток времени из MYSQL с использованием php в ISO-8601.

date('c',strtotime($TimeStamp));

Это прекрасно работает, за исключением того, что я получаю смещение часового пояса в конце

2011-07-10T08:46:50-**05:00**

что я хочу это 2011-07-10T08:46:50Z

Кто-нибудь имеет решение или знает, почему я получаю смещение часового пояса?

Ответы [ 5 ]

8 голосов
/ 11 июля 2011

Вы можете сделать это непосредственно в MySQL:

SELECT DATE_FORMAT(yourfield, '%Y-%m-%dT%H:%i:%s0Z')

Также есть вызов GET_FORMAT(datetime, 'iso'), но он возвращает строку формата для ISO 9075, что не совсем то, что вам нужно.Поскольку он не выполняет 8601 напрямую, вам нужно самостоятельно создать строку формата.

3 голосов
/ 11 июля 2011

'c' вернет всю дату, включая смещение часового пояса. Вам придется построить его вручную, используя другие параметры. Попробуйте это:

$time_stamp = time();
echo date('o-m-N',$time_stamp)."T".date('H:i:s',$time_stamp)."Z";
1 голос
/ 11 октября 2016

Другой способ:

substr(date('c',strtotime($Timestamp)),0,-6).'Z';

1 голос
/ 11 октября 2015

Простой для открытого графика

 date('Y-m-d\TH:i', strtotime('2015/09/24 08:46:50))
1 голос
/ 23 сентября 2014

http://php.net/manual/en/class.datetime.php#datetime.constants.types

const string ISO8601 = "Y-m-d\TH:i:sO";

Вы можете использовать свой собственный формат:

date('Y-m-d\TH:i:s\Z',strtotime($TimeStamp));
...