Подтвердить что ты не робот

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

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

4b9b3361

Ответ 1

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

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

$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'));

Ответ 2

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

http://ideone.com/nD7piL

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

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

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

Ответ 3

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

Ответ 4

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

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

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