Как мне конвертировать дату и время в ISO 8601 в PHP - PullRequest
84 голосов
/ 16 марта 2011

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

Ответы [ 5 ]

203 голосов
/ 16 марта 2011

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

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

$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'));
34 голосов
/ 24 июня 2012

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

http://ideone.com/nD7piL

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

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

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

3 голосов
/ 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 в 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
0 голосов
/ 28 февраля 2018
date("c");

//output : 2018-02-28T13:12:44+01:00
0 голосов
/ 13 ноября 2017

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

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

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