PHP在到达一行代码时停止执行

时间:2012-03-20 20:58:24

标签: php unix datetime epoch

我正在为Wordpress编写一个PHP脚本,我正在对我们的系统进行API调用,它包含一个.Net到Json格式的DateTime字符串。使用正则表达式我已经将它剥离到自Unix Epoch以来的秒数。据我所知,我应该能够使用DateTime :: createFromFormat('U',$ time)创建一个DateTime对象;但是脚本在遇到它时会停止执行它(它会执行到那一点的所有操作)。我把它包裹在一个try / catch中,但即使那个没有被执行,它只是简单地“死”,我想。

这里发生了什么?

preg_match_all('/\d+/', $post->discussion->posttime, &$ms);
$ms = $ms[0];
var_dump($ms[0]);
$time = substr($ms[0], 0, strlen($ms[0]) - 3);
var_dump($time);
$date = DateTime::createFromFormat('U', $time);
//Nothing after the above line is executed
var_dump($date);
...

页面输出如下:

string(13) "1332244919776" 
string(10) "1332244919"

在显示DateTime行之后我没有放置任何东西(或者据我所知,执行)。我已经在线使用了有效的Unix时间戳,但它仍然不起作用。我也尝试了其他格式('Y-m-d')与匹配的日期字符串格式,但没有一个有效。使用new DateTime()创建常规的“now”DateTime对象;虽然有效。

1 个答案:

答案 0 :(得分:1)

这听起来像是一个致命错误,报告错误。

问题的最可能原因是您正在使用某个版本的php< 5.3。在版本5.3中添加了对createFromFormat的支持,而在版本5.2中添加了DateTime对象。