2017-07-25 70 views
-1

Fatal error: Uncaught Error: Call to a member function format() on boolean in /homepages/21/*****/*****/******/card/upload.php:29 Stack trace: #0 {main} thrown in /homepages/21/******/*****/*****/card/upload.php on line 29DateTime对象错误:调用布尔

$newarray['date'] = DateTime::createFromFormat("j M Y", $arry[0])->format("Y-m-d"); 

怎样才能解决这个问题的一个成员函数的格式()?

+1

还有什么在'$ ARRY [0]'? –

+0

'DateTime :: createFromFormat'返回一个新的DateTime实例或失败时返回FALSE。如果失败false是一个布尔值,那么就是错误。 – nerdlyist

+0

也格式应该有破折号''j-M-Y'' – nerdlyist

回答

0

很明显,您通过$arry[0]传递了无效的日期表达式。

这里是一个demo

// it works when $arry[0] is valid 
$arry=['28 Jan 2017']; 
$newarray['date'] = DateTime::createFromFormat("j M Y", $arry[0])->format("Y-m-d"); 
echo $newarray['date']; 

echo "\n\n"; 

// it doesn't otherwise 
$arry=['28 Mon 2017']; // or an empty string, etc. 
$newarray['date'] = DateTime::createFromFormat("j M Y", $arry[0])->format("Y-m-d"); 
echo $newarray['date']; 

输出:

2017-01-28 

<br /> 
<b>Fatal error</b>: Uncaught Error: Call to a member function format() on boolean in [...][...]:16 
Stack trace: 
#0 {main} 
    thrown in <b>[...][...]</b> on line <b>16</b><br />