首页 > 解决方案 > 为什么 DateTime::createFromFormat() 返回一个布尔值并显示数据丢失错误?

问题描述

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

致命错误:未捕获的错误:在 /Users/xxx/xxx/xxx/www/login/user/save.php:18 中调用 bool 上的成员函数 format() 堆栈跟踪:在 /Users/ 中抛出 #0 {main} 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");

标签: phpdatetime

解决方案


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


推荐阅读