Как мне преобразовать дату ISO8601 в другой формат в PHP? - PullRequest
8 голосов
/ 23 июня 2011

Facebook выводит даты в формате ISO8601 - например: 2011-09-02T18: 00: 00

Как с помощью PHP я могу переформатировать что-то вроде: пятница, 2 сентября 2011 года в 18:00

Примечание: я делал это в Javascript, но в IE есть ошибки с датой, поэтому я хочу кросс-браузерное решение.

Ответы [ 2 ]

13 голосов
/ 23 июня 2011

Быстрое, но иногда ненадежное решение:

$date = '2011-09-02T18:00:00';

$time = strtotime($date);

$fixed = date('l, F jS Y \a\t g:ia', $time); // 'a' and 't' are escaped as they are a format char.

Формат символов подробно здесь .

0 голосов
/ 03 апреля 2017

Преобразование из ISO 8601 в unixtimestamp:

strtotime('2012-01-18T11:45:00+01:00');
// Output : 1326883500

Преобразование из unixtimestamp в ISO 8601 (сервер часовых поясов):

date_format(date_timestamp_set(new DateTime(), 1326883500), 'c');
// Output : 2012-01-18T11:45:00+01:00

Преобразование из unixtimestamp в ISO8601 (GMT):

date_format(date_create('@'. 1326883500), 'c') . "\n";
// Output : 2012-01-18T10:45:00+00:00

Преобразование из метки unixtime в ISO 8601 (пользовательский часовой пояс):

date_format(date_timestamp_set(new DateTime(), 1326883500)->setTimezone(new DateTimeZone('America/New_York')), 'c');
// Output : 2012-01-18T05:45:00-05:00
...