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

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

5 ответов


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

это рекомендуемый способ.

$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 форматированный datetime.

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("Y-m-d\TH:i",strtotime('2010-12-30 23:21:46'));

//output : 2010-12-30T23:21

date("c");

//output : 2018-02-28T13:12:44+01:00