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

对于文件上传脚本(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
$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