为什么DateTime :: createFromFormat()返回一个布尔值并显示数据丢失错误?

时间:2019-09-27 20:02:46

标签: php datetime

当我运行这些代码时。我收到此错误:

  

致命错误:未捕获错误:在/Users/xxx/xxx/xxx/www/login/user/save.php:18中的bool上调用成员函数format():18堆栈跟踪:#0 {main}被抛出/Users/xxx/xxx/xxx/www/login/user/save.php,位于第18行。

format()函数是否存在问题?

当我使用此功能时:

var_dump($tmp);
var_dump(DateTime::CreateFromFormat("m/d/Y", $_POST['start_date']));
var_dump(DateTime::getLastErrors("m/d/Y", $_POST['start_date']));

尝试获取错误消息,它显示:

bool(false)
bool(false)
array(4) {
  ["warning_count"]=> int(0)
  ["warnings"]=> array(0) { }
  ["error_count"]=> int(1)
  ["errors"]=> array(1) {
    [0]=> string(12) "Data missing"
  }
}
$_POST = array_map('stripslashes', $_POST);
$tmp = DateTime::CreateFromFormat("m/d/Y", $_POST['start_date']);
//var_dump....
$start_date = $tmp->format("Y-m-d");
$tmp = DateTime::CreateFromFormat("m/d/Y", $_POST['end_date']);
$end_date = $tmp->format("Y-m-d");

2 个答案:

答案 0 :(得分:0)

确保以小写的“ c”开头功能正确的大小写。

DateTime::createFromFormat()

$tmp = DateTime::createFromFormat("m/d/Y", $_POST['start_date']);

此方法在失败时返回DateTime对象 false。 在您的情况下,$tmp似乎是错误的(由于错误的函数调用?),并且您不能在布尔值上调用format(),错误消息是怎么说的。

所以在申请前先检查一下。

if($tmp) $start_date = $tmp->format("Y-m-d");

答案 1 :(得分:0)

由于数据丢失而出现致命错误,因此它返回bool(false)。如果我在首页表格中输入特定时间,然后首页将显示数据: object(DateTime)#7(3){[“ date”] =>字符串(26)“ 2019-09-30 15:09:14.000000” [“ timezone_type”] => int(3)[“ timezone”] = > string(3)“ UTC”}。并且它很好地插入数据库。感谢您的所有帮助和指导!

相关问题