如何从生日那里轻松确定年龄? (PHP)

时间:2009-07-29 23:32:05

标签: php mysql date

  

可能重复:
  Calculate years from date

您好,

我有一个表格,表示生日。如何从该日期找到该人的年龄?

这就是我所拥有的。

$qPersoonsgegevens = "SELECT * FROM alg_persoonsgegevens WHERE 
alg_persoonsgegevens_leerling_ID = $leerling_id";

$rPersoonsgegevens = mysql_query($qPersoonsgegevens);
$aPersoonsgegevens = mysql_fetch_assoc( $rPersoonsgegevens );

$timeBirthdate = mktime($aPersoonsgegevens['alg_persoonsgegevens_geboortedatum']);

不幸的是,我不知道如何从这一点开始到达年龄。

非常感谢任何帮助 Matthy

3 个答案:

答案 0 :(得分:7)

This has been asked before.试试这个:

function getAge($then) {
    $then = date('Ymd', strtotime($then));
    $diff = date('Ymd') - $then;
    return substr($diff, 0, -4);
}

这样称呼:

$age = getAge($aPersoonsgegevens['alg_persoonsgegevens_geboortedatum']);

答案 1 :(得分:3)

生日和年龄是文化上的依赖

记住一些文化从受孕开始计算您的年龄或在出生时开始计算1岁可能是有用的。特别是,在进行年龄计算时,您需要小心韩国市场。

我怀疑问题的作者是否需要这些信息,但我只是想大声说出来,因为它可能对程序员在某个地方和某个时间都有用。

答案 2 :(得分:1)

我写了一个应用程序,显示几个月或几天(1个月以下的婴儿)的婴儿年龄(最多24个月):

public function getAge ()
{
  if ($this->getBirthDate() === null) {
return null;
  }

  if (! $this->getAdmitTime() == null ) {
$relative_to = $this->getAdmitTime(null);  # null format returns Unix ts
  }
  else {
$relative_to = time(); # Unix ts
  }

  $age_in_seconds = $relative_to - $this->getBirthDate(null);
  $age_in_years = intval($age_in_seconds / (60*60*24*365.25));

  if ($age_in_years >= 2) {
return $age_in_years;
  }
  else {
$age_in_months = intval($age_in_seconds / (60*60*24*30));
if ($age_in_months >= 1) {
  return "$age_in_months month". ($age_in_months == 1 ? '' : 's');
}
else {
  $age_in_days = intval($age_in_seconds / (60*60*24));
  return "$age_in_days day" . ($age_in_days == 1 ? '' : 's');
}
  }

}

所以你可能有这些人类可读的年龄值:

  • 21
  • 3
  • 17个月
  • 3天