计算从下拉列表中选择的日,月,年的年龄

时间:2016-03-09 22:22:24

标签: php html

我根据下拉列表中的选择注册了我的DOB。

 Date of Birth:
    <select name="DOBDay" required>
    <option> Day </option>
    <option value="1">1</option>
    <option value="2">2</option>
    // etc ....

月和年采用相同的方法。因此,当我处理注册表单时,从这三个下拉列表中获取数据并分配给三个不同的变量:

$DOBDay       = strip_tags(@$_POST['DOBDay']);
$DOBMonth     = strip_tags(@$_POST['DOBMonth']);
$DOBYear      = strip_tags(@$_POST['DOBYear']);

我需要一种方法可以根据提供的DOB获取用户的当前年龄,但由于我将它存储在三个不同的变量(以及我的数据库中的三个不同的列)中,我不知道如何我可以得到他们现在的年龄。有什么想法吗?

更多详情

我需要一个$age变量来计算年龄,我需要它是int类型,这样我就可以将年龄存储在我的db中的age列中。

2 个答案:

答案 0 :(得分:1)

这个怎么样:

$birthday = new DateTime();
$birthday->setDate($DOBYear, $DOBMonth, $DOBDay);
$now = new DateTime("now");
$age = $birthday->diff($now);
echo $age->y . " years old";

答案 1 :(得分:0)

获取字符串并将它们连接成日期格式并使用与此类似的代码。

<?php
  //date in mm/dd/yyyy format; or it can be in other formats as well
  $birthDate = "$DoBMonth/$DoBDay/$DoBYear";
  //explode the date to get month, day and year
  $birthDate = explode("/", $birthDate);
  //get age from date or birthdate
  $age = (date("md", date("U", mktime(0, 0, 0, $birthDate[0], $birthDate[1], $birthDate[2]))) > date("md")
    ? ((date("Y") - $birthDate[2]) - 1)
    : (date("Y") - $birthDate[2]));
  echo "Age is:" . $age;
?>