【发布时间】:2012-04-05 09:26:40
【问题描述】:
我正在为 Wordpress 编写一个 PHP 脚本,我正在对我们的系统进行 API 调用,它包含一个 .Net 到 Json 格式的 DateTime 字符串。使用正则表达式,我已将其缩减到自 Unix 纪元以来的秒数。据我了解,我应该能够使用 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() 创建一个常规的“现在”DateTime 对象;虽然有效。
【问题讨论】:
-
在其他任何内容之前添加此行:
error_reporting(E_ERROR | E_WARNING | E_PARSE | E_NOTICE);。然后运行您的脚本并让我们知道输出。 -
是的,间接答案是您应该打开错误报告并找出问题所在。添加建议的行 simplecoder。您可能还需要添加
ini_set("display_errors", "1");行。