如何考虑今天的年龄至少为18岁的人在PHP的日期?

时间:2014-06-17 12:07:40

标签: php validation date date-format

我按照代码检查用户是否在今天的日期之前出生(用户出生日期存储在变量$form_data['dob']中)。它的代码如下:

    if(change_date_format_to_db($form_data['dob'], 'Y-m-d') > change_date_format_to_db(date('Y-m-d'), 'Y-m-d'))
$this->mValidator->push_error($errors_msgs['user_dob_greater'], 'dob');

function change_date_format_to_db( $date, $current_format, $seperator = "/" ) { 
            if ( empty($date) || empty($current_format) ) {
                return "";
            }
            $current_format = strtoupper($current_format);
            $format_array   = explode("-", $current_format);
            $date_values    = explode($seperator, $date);

            for ($i=0;$i<3;$i++) {
                $date_data[ $format_array[$i] ] =  $date_values[$i] ;
            }

            $mysql_date_format = $date_data["Y"]."-".$date_data["M"]."-".$date_data["D"];
            return $mysql_date_format;
      }

现在,不要在今天的日期之前检查用户的日期,而是希望用户在今天的日期至少年满18周岁。我应该如何使用上面的代码?提前谢谢。

1 个答案:

答案 0 :(得分:2)

使用DateTime Object

保持简单
$birthday = DateTime::createFromFormat('Y/m/d', $form_data['dob']);

$diff = $birthday->diff(new DateTime());
//                       ^^ now

if ($diff->y < 18) {
    echo 'this site requires +18yrs';
}