我正在使用 FileAPI
获取文件的 HTTP-header Last-Modified 时间,返回的字符串如下:
Fri Oct 25 2013 12:04:10 GMT+0100 (GMT Daylight Time)
这段文本首先被提交到PHP,我需要把它转换成有意义的东西,最好是一个时间戳。在你建议使用strtotime()
之前,请注意,strtotime()
会返回FALSE
。
似乎无法在任何地方找到答案。
我正在使用 FileAPI
获取文件的 HTTP-header Last-Modified 时间,返回的字符串如下:
Fri Oct 25 2013 12:04:10 GMT+0100 (GMT Daylight Time)
这段文本首先被提交到PHP,我需要把它转换成有意义的东西,最好是一个时间戳。在你建议使用strtotime()
之前,请注意,strtotime()
会返回FALSE
。
似乎无法在任何地方找到答案。
幸运的是,自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 $datetime->getTimestamp();
输出:
1382699050
.*
之前,正则表达式无法匹配。 - user1832464preg_replace()
不是必要的。请查看我的更新。当我回答这个问题时,我应该更仔细地阅读文档。 ;) 你对问题的标题是正确的。我已经改变了这个。 - hek2mglstrtotime()
只能解析字符串到 PHP 版本 5.2.17" - 这是不正确的。我正在使用 PHP 5.6.20,而且我可以很好地使用它:strtotime("Tue, 15 Nov 1994 12:45:26 GMT");
。 - Dai如果问题在括号内的字符串,你可以将它子串到第一个,然后像@Marcell在评论中建议的那样使用strtotime
。
echo strtotime('Fri Oct 25 2013 12:04:10 GMT+0100');
=>1382699050
。strtotime()
函数能够解析这个日期格式。 - marekful