2013-02-13 2 views
2

настоящее время я использую ConstantContact, который возвращает XML с обновленным поле в формате, как это:дата PHP Анализировать в формате ISO

2013-02-13T08:35:34.195Z 

Я предполагаю, что это дата («с») формат. Как разобрать этот формат? strtotime не возвращает правильное значение.

+0

'date ('c', strtotime ($ date));'? В противном случае, что вы пробовали. – AmazingDreams

+0

@AmazingDreams Я действительно не знаю, что попробовать ... Я хочу получить временную метку unix из строкового представления. – ewooycom

ответ

15

Возможно, вы захотите взглянуть на функцию DateTime::createFromFormat().

$datetime = DateTime::createFromFormat('Y-m-d\TH:i:s+', '2013-02-13T08:35:34.195Z'); 

Проблема в том, что вы собираетесь потерять миллисекунды.

Значок + в строке формата просто сообщает этой функции игнорировать остальную часть строки вместо создания ошибки.

Подтверждено в PHP7.2. Как и в комментарии ниже, вы можете использовать Y-m-d\TH:i:s.u\Z для соответствия точной строке Js, которую предоставляет toISOString.

+0

Мне действительно не нужны миллисекунды, похоже, это работает. Спасибо – ewooycom

+11

Использование '' DateTime :: ISO8601'' или '' c'' вместо '' Ymd \ TH: i: s + ''в' createFromFormat() 'также работает ... – grim

+3

Мне пришлось добавить часовой пояс, чтобы сделать он работает: 'DateTime :: createFromFormat ('Ymd \ TH: i: s +', $ isotime, новый DateTimeZone ('Etc/Zulu'));' –

Смежные вопросы