Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/288.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Php 为什么DateTime::createFromFormat()返回布尔值并显示数据丢失错误?_Php_Datetime - Fatal编程技术网

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

Php 为什么DateTime::createFromFormat()返回布尔值并显示数据丢失错误?,php,datetime,Php,Datetime,当我运行这些代码时。我得到了这个错误: 致命错误:未捕获错误:在第18行的/Users/xxx/xxx/xxx/www/login/user/save.php:18堆栈跟踪:#0{main}抛出/Users/xxx/xxx/www/login/user/save.php中调用bool上的成员函数format() format()函数是否有问题 当我使用此选项时: var_dump($tmp); var_dump(DateTime::CreateFromFormat(“m/d/Y”,$_POST[

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

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

format()
函数是否有问题

当我使用此选项时:

var_dump($tmp);
var_dump(DateTime::CreateFromFormat(“m/d/Y”,$_POST['start_date']);
变量转储(DateTime::getLastErrors(“m/d/Y”,“开始日期”$);
尝试获取错误消息,它显示:

bool(假)
布尔(假)
阵列(4){
[“警告计数”]=>int(0)
[“警告”]=>数组(0){}
[“错误计数”]=>int(1)
[“错误”]=>数组(1){
[0]=>字符串(12)“数据丢失”
}
}
$\u POST=array\u map('stripslashes',$\u POST);
$tmp=DateTime::CreateFromFormat(“m/d/Y”,“开始日期”$);
//var_dump。。。。
$start_date=$tmp->格式(“Y-m-d”);
$tmp=DateTime::CreateFromFormat(“m/d/Y”,$\u POST['end\u date']);
$end_date=$tmp->格式(“Y-m-d”);

确保以较低的“c”开始功能正确的案例

此方法在失败时返回日期时间对象false。 在您的情况下,
$tmp
看起来是false(由于错误的函数调用?),并且您不能对布尔值调用format(),错误消息是这样说的

所以在申请前要检查一下

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

出现致命错误是因为缺少数据,因此返回bool(false)。如果我在首页表单中键入特定时间,首页将显示以下数据:
对象(日期时间)#7(3){[“日期”]=>string(26)“2019-09-30 15:09:14.000000”[“时区类型”]=>int(3)[“时区”]=>string(3)“UTC”}。而且它可以很好地插入到数据库中。谢谢你的帮助和指导

您的
$\u POST['start\u date']
很可能不是所需的格式:
m/d/Y
阅读文档:如果出现错误,它将返回
FALSE
。仅供参考,
DateTime::getLastErrors()
不接受任何参数。
$\u POST['start\u date']
?确保处理表单的代码类似于
if(isset($\u POST['submit'])
——用提交按钮的实际名称替换
submit
if($tmp) $start_date = $tmp->format("Y-m-d");