【问题标题】:DateTime Object Error: Call to a member function format() on booleanDateTime 对象错误:在布尔值上调用成员函数 format()
【发布时间】:2017-07-25 19:43:10
【问题描述】:

致命错误:未捕获的错误:调用成员函数 format() on /homepages/21/*****/*****/******/card/upload.php:29 中的布尔值 跟踪:#0 {main} 投入 /homepages/21/******/*****/*****/card/upload.php 第 29 行

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

如何解决这个问题?

【问题讨论】:

  • $arry[0] 中有什么内容?
  • DateTime::createFromFormat 返回一个新的 DateTime 实例,失败时返回 FALSE。如果失败,则 false 是布尔值,因此是错误。
  • 格式也应该有破折号'j-M-Y'

标签: php datetime datetime-format


【解决方案1】:

很明显,您通过$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 />

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-05-30
    • 1970-01-01
    • 2015-11-04
    相关资源
    最近更新 更多