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

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

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

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

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

$date = '2011-09-02T18:00:00'; $time = strtotime($date); $fixed = date('l, F jS Y \a\tg:ia', $time); // 'a' and 't' are escaped as they are a format char. 

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

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

 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