我有一个日期选择器,格式为: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');
我确信此脚本适用于其他页面。有人知道我为什么会收到此错误以及我如何解决它=
答案 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日
我希望这会给调试一些想法。