Как преобразовать дату ISO8601 в другой формат в PHP?

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

используя PHP, как я могу переформатировать что - то вроде: Пятница, сентябрь 2nd 2011 в 6: 00 вечера

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

2 ответов


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

$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.

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


преобразование из 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 в ISO 8601 (GMT):

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

преобразование из unixtimestamp в 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