解析HTTP';上次修改';PHP中的日期字符串
我正在使用解析HTTP';上次修改';PHP中的日期字符串,php,date,date-formatting,last-modified,Php,Date,Date Formatting,Last Modified,我正在使用FileAPI获取文件的HTTP头上次修改时间,该时间返回以下字符串: Fri Oct 25 2013 12:04:10 GMT+0100 (GMT Daylight Time) 然后将其发布到PHP,我需要将其转换为合理的内容,最好是时间戳。在建议之前,strotime()返回FALSE 似乎在任何地方都找不到任何答案。好吧,如果问题是括号内的字符串,您可以将其子串到第一个字符串,并使用@Marcell在评论中建议的strotime。幸运的是,5.3.0中有。尽管它无法解析尾随信息
FileAPI
获取文件的HTTP头上次修改时间,该时间返回以下字符串:
Fri Oct 25 2013 12:04:10 GMT+0100 (GMT Daylight Time)
然后将其发布到PHP,我需要将其转换为合理的内容,最好是时间戳。在建议之前,strotime()
返回FALSE
似乎在任何地方都找不到任何答案。好吧,如果问题是括号内的字符串,您可以将其子串到第一个字符串,并使用@Marcell在评论中建议的
strotime
。幸运的是,5.3.0中有。尽管它无法解析尾随信息,但至少可以使用+
说明符忽略它。您不需要这些信息来创建时间戳,因为您已经有了可解析的机器,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
echo标准时间(“2013年10月25日星期五12:04:10 GMT+0100”)代码>=>138269050
strotime()
能够解析此日期格式…字符串包括上述(GMT夏令时)吗?这是完整的字符串。@MarcellFülöp谢谢@hek2mgl-这解释了我看到的问题-这里的php版本是5.3.3。请将此添加为一个答案,以便我可以接受-我认为这是对遇到此问题的任何其他人最有用的解释。谢谢,尽管正则表达式在我从preg\u replace调用中删除首字母*
之前不会匹配,但一旦您从preg\u replace调用中获得$str,您就不能使用strotime($str)
来获取时间戳吗?我正在这样做,然后date('Y-m-dh:I:s',$timestamp)
为mysql查询格式化日期,没有问题(到目前为止:)。此外,这个问题是否可以改写为将“格式化”替换为“解析”?格式化听起来像是将数据转换为字符串,但实际上您正试图将字符串头解析为一个值。@Neekpreg\u replace()
。检查我的更新。当我回答这个问题时,我应该更仔细地阅读文档你的题目是对的。我改变了这一点。“strotime()
只能在PHP版本5.2.17之前解析字符串”-这是不真实的。我使用的是PHP5.6.20,我能够很好地使用它:strotime(“周二,1994年11月15日12:45:26 GMT”)代码>。我明白了。这是一个古老的答案,我不知道这是从哪里来的