Intereting Posts

php datetime createformat parse

Я пытаюсь проанализировать следующую строку:

Thu Oct 03 2013 07:03:41 GMT+0200 (Central Europe Standard Time) 

Но я изо всех сил стараюсь найти соответствующий формат, я попробовал:

  $date= DateTime::createFromFormat('DM d YH:i:s eO (*)','Thu Oct 03 2013 07:03:41 GMT+0200 (Central Europe Standard Time)'); echo $date->format('Ym-d'); 

Это приводит к ошибке. Проблема в том, что между GMT + 0200 и скобками нет пробела. Следующие работы просто отлично

 $date= DateTime::createFromFormat('DM d YH:i:se O','Thu Oct 03 2013 07:03:41 GMT +0200'); echo $date->format('Ym-d'); 

Но (очевидно) я должен также проанализировать первый пример. Итак, есть ли у вас какие-либо предположения о том, как должен выглядеть правильный формат?

ошибка, которую я получаю:

 Fatal error: Call to a member function format() on a non-object in C:\.... 

var_dump $ date перед вызовом $ date-> format:

  boolean false 

Проблема заключается в строке формата, которая должна быть

 DM d YH:i:s e+ 

Я заменил eO только на e потому что вход содержит GMT+0200 , у которого нет разделителя между «GMT» и смещением. Я также заменил (*) часть на + , который является единственным спецификатором, который может потреблять переменное количество ввода ( * соответствует одному токену, т. Е. Одному слову – если после этого больше вводится синтаксический анализ).

Обратите внимание, что по-прежнему будет предупреждение из-за использования + (используйте DateTime::getLastErrors чтобы увидеть его), но преобразование будет работать правильно.

Вы можете разбить входящую строку. Вот один из способов скининга этого конкретного кота:

 $dateString = 'Thu Oct 03 2013 07:03:41 GMT+0200(Central Europe Standard Time)'; \DateTime::createFromFormat('DM d YH:i:s O', explode('(', $dateString)[0]); 

См. http://php.net/date для получения дополнительной справки.

Смотрите, как работает .