尝试转换dateformat时出现致命错误

时间:2017-06-30 14:21:49

标签: php

我有一个日期选择器,格式为:d/m/Y

我正在尝试将日期从datepicker发送到我的数据库,格式为:Y-m-d

我正在使用以下脚本:

$myDateTime1 = DateTime::createFromFormat('d/m/Y', $single_cal4);
$newSingle_cal4 = $myDateTime1->format('Y-m-d');

当我运行此脚本时,我收到以下错误:

Fatal error: Call to a member function format() on a non-object in /send1.php on line 80

第80行是:

$newSingle_cal4 = $myDateTime1->format('Y-m-d');

我确信此脚本适用于其他页面。有人知道我为什么会收到此错误以及我如何解决它=

3 个答案:

答案 0 :(得分:2)

这仅表示$myDateTime1不是对象,这意味着DateTime::createFromFormat('d/m/Y', $single_cal4);失败,这意味着$single_cal4不是有效日期。请参阅createFromFormat()的文档,了解遇到错误时返回的内容。您需要添加一项检查以确保其正常运行。

答案 1 :(得分:1)

Alex Howansky是对的,你应该检查$myDateTime1是否有效:

try {
    $myDateTime1 = DateTime::createFromFormat('d/m/Y', $single_cal4);
} catch (Exception $e) {
    echo $e->getMessage();
}
$newSingle_cal4 = $myDateTime1->format('Y-m-d');

答案 2 :(得分:0)

您应该将第二个参数$ single_cal4作为String传递给createFromFormat()函数。参考http://php.net/manual/en/datetime.createfromformat.php

以下代码会出错,因为第二个参数未作为字符串传递

 $myDateTime1 = DateTime::createFromFormat('d/m/Y', 23/06/2000);
 echo $newSingle_cal4 = $myDateTime1->format('Y-m-d');

当它作为字符串传递时,您将获得所需的结果

$myDateTime1 = DateTime::createFromFormat('d/m/Y', '23/06/2000');
echo $newSingle_cal4 = $myDateTime1->format('Y-m-d');

输出: 2000年6月23日

我希望这会给调试一些想法。