Как преобразовать datetime в ISO 8601 в PHP

Как мне преобразовать свое время с 2010-12-30 23:21:46 в формат даты ISO 8601? (-_-;)

Объектно-ориентированный

Это рекомендуется.

 $datetime = new DateTime('2010-12-30 23:21:46'); echo $datetime->format(DateTime::ATOM); // Updated ISO8601 

процедурный

Для более старых версий PHP, или если вам удобнее процедурный код.

 echo date(DATE_ISO8601, strtotime('2010-12-30 23:21:46')); 

После PHP 5 вы можете использовать это: echo date("c"); форму ISO 8601, форматированное дату и время.

http://ideone.com/nD7piL

Примечание для комментариев:

В связи с этим оба эти выражения действительны для часовой пояс, для базового формата: ±[hh]:[mm], ±[hh][mm], or ±[hh] .

Но учтите, что + 0X: 00 верно, а + 0X00 неверно для расширенного использования. Поэтому лучше использовать date("c") . Подобное обсуждение здесь .

Как конвертировать из 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 

Если вы попытаетесь установить значение в datetime-local

date ("Ymd \ TH: i", strtotime ('2010-12-30 23:21:46'));

// вывод: 2010-12-30T23: 21