Php 为什么DateTime::createFromFormat()返回布尔值并显示数据丢失错误?
当我运行这些代码时。我得到了这个错误: 致命错误:未捕获错误:在第18行的/Users/xxx/xxx/xxx/www/login/user/save.php:18堆栈跟踪:#0{main}抛出/Users/xxx/xxx/www/login/user/save.php中调用bool上的成员函数format()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[
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");