【发布时间】:2014-02-26 14:07:24
【问题描述】:
对于文件上传脚本(HTML5 File 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) 上一切正常,$_POST['fileLastModified'] 设置为类似字符串
2014 年 2 月 26 日星期三 13:42:22 GMT+0100 (CET)
在 PC (Windows 8) 上,$_POST['fileLastModified'] 设置为类似
2014 年 2 月 26 日星期三 13:42:22 GMT+0100(西欧标准时间)
PHP 给了我一个很长的错误信息(上面的代码)
“异常”,带有消息“DateTime::_construct(): 无法解析 时间字符串(2014 年 2 月 26 日星期三 13:42:22 GMT+0100(西欧标准 Time)) 在位置 38 (E):双时区规范'在 /FILEPATH/upload.php:57\n堆栈跟踪:\n#0 /FILEPATH/upload.php(57): DateTime->_construct('Wed Feb 26 2014...')
那么...为什么 DateTime 在 PC 上无法解析字符串,而在 OSX 上却完美运行?
【问题讨论】:
-
W. Europe Standard Time无效。 -
@JohnConde 谢谢,有什么建议可以只删除那部分吗?所以它仍然适用于每个文件修改日期?
-
您是否尝试过使用php.net/manual/en/function.strptime.php 并指定预期的日期格式,因为此函数会忽略所有无法识别的元素?
-
@D.Kasipovic 还没有,因为我对 PHP 的了解非常有限,DateTime 似乎是将日期转换为 UTC 时间并将格式更改为任何我想要的最简单的解决方案。需要了解如何对
strptime执行相同操作。