我希望从约会开始获得日,月和年,但它不起作用。我总是收到错误:
致命错误:在第4行的printtest.php中调用非对象的成员函数format()
这是我的printtest.php
代码。我收到了一个错误。如何解决这个问题?查看实时演示here。
<?php
$dob = $_POST['dob'];
$date = DateTime::createFromFormat("Y-m-d", '$dob');
$year1 = $date->format("Y");
$day1 = $date->format("d");
$mon3 = $date->format("m");
echo $year1;
?>
答案 0 :(得分:0)
删除dob变量周围的单引号,如Alessandro所说,但是,
根据您的示例网站,输入字段的格式为d-m-Y
,您传递的格式为Y-m-d
。
所以改变
$date = DateTime::createFromFormat("Y-m-d", '$dob');
是
$date = DateTime::createFromFormat("d-m-Y", $dob);
答案 1 :(得分:0)
Try the below code to get the Year
<?php
$dob = $_POST['dob'];
$date = explode("-",$dob);
$year1 = $date[2];
echo $year1;
?>
答案 2 :(得分:-1)
变量插值仅在双引号字符串中发生,因此此代码试图解析字符串&#34; $ dob&#34;作为Y-m-d日期,而不是变量$dob
中包含的字符串。可以通过将DateTime::createFromFormat("Y-m-d", '$dob')
更改为DateTime::createFromFormat("Y-m-d", "$dob")
此外,由于您可能无法控制发布到脚本的值,因此在尝试操作其返回值之前,应检查DateTime::createFromFormat()
是否返回了一个对象(在失败时返回false),例如
$date = DateTime::createFromFormat("Y-m-d", "$dob");
if (!$date)
{
echo "Invalid dob (YYYY-mm-dd): $dob";
exit;
}
$year1 = $date->format("Y");
$day1 = $date->format("d");
$mon3 = $date->format("m");
echo $year1;
这样一来,如果一个不能被解析为Y-m-d日期的dob被发布,你就不会得到同样的致命错误,而是更有用的#34;无效的dob&#34;消息。