PHP DateTime 问题:调用布尔值上的成员函数 format()

PHP DateTime Issue: Call to a member function format() on boolean

我知道这里已经被打死了,这些年的帖子我都看了一遍,还是找不到解决办法。我正在尝试重新安排日期并使用了各种方法,但一直出现此错误。

$dateMDY    = trim($dateTime2[1]);
$dateMDYp   = preg_replace("~(.*?)/(.*?)/(.*?)~", "--", $dateMDY);

echo "dateMDY: '".$dateMDY."'<br /><br /><br />\n";
echo "dateMDYp: '".$dateMDYp."'<br /><br /><br />\n";

$dt = DateTime::createFromFormat('n/j/y', '12/2/17');
echo "dt: '".$dt->format('Y-m-d')."'<br />\n"; 
$dt2 = DateTime::createFromFormat('n-j-y', '12-2-17');
echo "dt2: '".$dt2->format('Y-m-d')."'<br />\n";
$dt3 = DateTime::createFromFormat('n/j/y', $dateMDY);
echo "dt3: '".$dt3->format('Y-m-d')."'<br />\n";
$dt4 = DateTime::createFromFormat('n-j-y', $dateMDYp);
echo "dt4: '".$dt4->format('Y-m-d')."'<br />\n";

这将抛出以下内容:

dateMDY: '12/2/17'
dateMDYp: '12-2-17'
dt: '2017-12-02'
dt2: '2017-12-02'

( ! ) Fatal error: Uncaught Error: Call to a member function format() on boolean

我一定是遗漏了一些非常简单的东西,因为 DateTime:: 出于某种原因必须发送 false,但是当我调用变量时回显的格式显示正确的数字。

PHP v.7.1.0

DateTime::createFromFormat return false 出错 (more here).

这就是为什么当您调用 ->format 时您会得到

Call to a member function format() on boolean

要查看错误,您可以调用 DateTime::getLastErrors。 (DateTime::getLastErrors)

好的。我已经解决了这个问题。我开始 var_dump-ing 所有变量,直到我注意到一些东西...

C:\wamp64\www\a\datetime.php:47:string '12/2/17</URD>' (length=13)

虽然打印和回显仅显示“12/2/17”,但var_dump 显示尾随数据“”,这是我在数据库中的标签 table 我是从调用。我不确定为什么完整的数据没有在打印或回显中显示,但是对我的 $dateMDY 变量的简单 str_replace 删除了看不见的 并且现在打印了正确的格式。

希望这可以帮助将来可能对附加到变量的看不见的数据感到困惑的人!

感谢@Mehrdad Dastgir 为我阐明了一个想法。