2013-12-06 9 views
4

Я использую FileAPI, чтобы получить HTTP-заголовок Last-Modified время файла, который возвращает следующую строку:PARSING HTTP «Last-Modified» строка Дата в PHP

Fri Oct 25 2013 12:04:10 GMT+0100 (GMT Daylight Time) 

Это потом отправил к PHP, и мне нужно, чтобы он преобразовывался в нечто разумное, желательно временную метку. Прежде чем вы предлагаете это, strtotime() возвращает FALSE.

Не может найти ответа на этот вопрос в любом месте.

+5

'эхо StrToTime ('пт 25 октября 2013 12:04:10 GMT + 0100');' => '1382699050'. 'strtotime()' IS может разобрать этот формат даты ... – marekful

+1

Строка, включающая (GMT Daylight Time), как указано выше? Это полная строка. – monkeymatrix

+1

@ MarcellFülöp http://3v4l.org/CStMB – hek2mgl

ответ

5

К счастью, с 5.3.0 есть DateTime::createFromFormat(). Хотя он не может проанализировать конечную информацию, он, по крайней мере, может игнорировать его, используя спецификатор +. Вам не нужна эта информация, чтобы создать временную метку, поскольку у вас уже есть машинный синтаксис, GMT+0100.

Пример:

$str = "Fri Oct 25 2013 12:04:10 GMT+0100 (GMT Daylight Time)"; 
$fmt = 'D M d Y H:i:s O+'; 

$datetime = DateTime::createFromFormat($fmt, $str); 
echo $dt->getTimestamp(); 

Выход:

1382699050 
+0

Спасибо, хотя регулярное выражение не будет соответствовать, пока я не удалю исходный '. *' – monkeymatrix

+0

Да, вы правы .. Моя ошибка :) – hek2mgl

+1

Как только у вас есть $ str от вызова preg_replace, не может вы просто используете '' strtotime ($ str) '' для получения метки времени? Я делаю это, а затем '' date ('Y-m-d H: i: s', $ timestamp) '' для форматирования даты запроса mysql без проблем (до сих пор :)). Кроме того, можно ли переформулировать этот вопрос, чтобы заменить «Форматирование» на «Анализ»? Форматирование звучит как преобразование данных в строку, но вы на самом деле пытаетесь разобрать строковый заголовок на значение. – Neek

0

Ну, если проблема заключается в строке внутри круглых скобок, вы можете подстроить ее до первой и использовать strtotime как @Marcell, предложенную в комментариях.

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

  • Нет связанных вопросов^_^