PHP确定客户的年龄

时间:2015-03-19 12:01:13

标签: php

我试图确保我的定制者年龄超过18岁。到目前为止,我已经通过获取出生日期和当前数据并找到两者之间的差异来做到这一点。

$diff=date_diff(date_create($DOB),date_create(date("Y-m-d")));
echo $diff->format("%R%a days");
if ($diff<6574){
    $D_error="You must be ages 18+ to make a booking";
}

找到的差异是正确的(显示正确的值)但是当它试图查看$ diff&lt; 6574时发生错误。
错误是:注意:类DateInterval的对象无法转换为int
我认为这有一些事情,因为$ diff是一个时间间隔,因此无法与整数进行比较。
我将如何解决这个问题?
整个事情就是这样:

if (empty($_POST["DOB"])){
    $D_error="DOB is required";
}elseif (!preg_match("/^[0-9]{4}-(0[1-9]|1[0-2])-(0[1-9]|[1-2][0-9]|3[0-1])$/",$DOB)){
    $D_error="DOB must be given in the form yyyy-mm-dd";
}else{
$diff=date_diff(date_create($DOB),date_create(date("Y-m-d")));
echo $diff->format("%R%a days");
if ($diff->days < 6574){{
    $D_error="You must be ages 18+ to make a booking";
}

}

但是有了这个,我意外地结束了文件。

3 个答案:

答案 0 :(得分:1)

$diff是一个对象,您无法将对象与整数进行比较。 您要查找的是对象的days属性。

您的比较应如下所示:

if($diff->days < 6574)
    //...

作为旁注,该对象还具有其他有趣的属性,例如y,即年数。所以你也可以简单地使用以下比较:

if($diff->y < 18)
    //...

答案 1 :(得分:1)

问题在于你的if语句。 Date_diff函数返回DateInterval对象(http://php.net/manual/en/class.dateinterval.php)的实例,因此您无法将其与整数进行比较。使用DateInterval对象的任何属性,例如$ days,甚至$ y(years),如下所示:

if ($diff->y < 18)

答案 2 :(得分:0)

date_diff返回具有公共属性天数的DateInterval。所以试试这个

if ($diff->days < 6574){
    $D_error="You must be ages 18+ to make a booking";
}