PHP日期时间错误/上次修改的文件
对于文件上传脚本(HTML5文件API/PHP使用上传的块创建文件),我需要将文件的最后修改日期转换为Mysql日期时间格式(“Y-m-d H:i:s”)。我的PHP代码中的部分如下所示:PHP日期时间错误/上次修改的文件,php,datetime,Php,Datetime,对于文件上传脚本(HTML5文件API/PHP使用上传的块创建文件),我需要将文件的最后修改日期转换为Mysql日期时间格式(“Y-m-d H:i:s”)。我的PHP代码中的部分如下所示: // The last modified date is in a POST Request (jQuery AJAX) $fileLastModified = new DateTime($_POST['fileLastModified']); // Convert to UTC $fileLastModif
// The last modified date is in a POST Request (jQuery AJAX)
$fileLastModified = new DateTime($_POST['fileLastModified']);
// Convert to UTC
$fileLastModified->setTimeZone(new DateTimeZone('UTC'));
// Change the format
$done = $fileLastModified->format('Y-m-d H:i:s');
在OSX 10.9(Mavericks)上,一切正常,$\u POST['fileLastModified']
被设置为类似
2014年2月26日星期三13:42:22 GMT+0100(CET)
在PC(Windows 8)上,$\u POST['fileLastModified']
设置为
2014年2月26日星期三13:42:22 GMT+0100(西欧标准时间)
PHP给了我一条很长的错误消息(上面的代码)
消息为“DateTime::_construct():的“Exception”无法分析
时间字符串(2014年2月26日星期三13:42:22 GMT+0100(西欧标准)
位置38(E)处的时间:双时区规范'in
/FILEPATH/upload.php:57\n堆栈跟踪:\n#0/FILEPATH/upload.php(57):
日期时间->(2014年2月26日星期三…)
所以。。。为什么DateTime在PC上无法解析字符串,而在OSX上却可以完美地工作?
DateTime::createFromFormat()
应该允许您有选择地选择要使用的日期部分:
$date = str_replace('+', ' +', 'Wed Feb 26 2014 13:42:22 GMT +0100 (W. Europe Standard Time)');
$fileLastModified = DateTime::createFromFormat('D M d Y H:i:s e O+', $date);
$fileLastModified->setTimeZone(new DateTimeZone('UTC'));
echo $fileLastModified->format('Y-m-d H:i:s');
由于某种原因,我不得不在
+
字符前加一个空格,因为断开的DateTime解析该字符串。W。欧洲标准时间
无效。@johncode谢谢,有没有建议如何仅删除该部分?因此,它仍然适用于每个文件修改日期?您是否尝试过使用并指定预期的日期格式,因为此函数将忽略所有无法识别的元素?@D.Kasipovic还没有,因为我对PHP的了解非常有限,DateTime似乎是将日期转换为UTC时间并将格式更改为我想要的任何格式的最简单解决方案。将需要了解如何使用strtime
执行相同的操作。谢谢,我尝试了您的代码并添加了$fileLastModified->format('Y-m-dh:i:s')代码>根据。但PHP似乎不喜欢这样,不管出于什么原因:“在中的非对象上调用成员函数format()”,让我把它放在小提琴上,看看会发生什么,非常感谢!现在适用于Windows和OSX