Как мне преобразовать свое время с 2010-12-30 23:21:46
в формат даты ISO 8601? (-_-;)
Как преобразовать datetime в ISO 8601 в PHP
Ответ 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.
Примечание для комментариев:
Что касается этого, оба этих выражения действительны для часового пояса, для базового формата: ±[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