从出生日期计算年龄在PHP


Calculate age from birthdate in PHP

我的一个朋友给了我这段代码,但我似乎不能让它工作。它一直告诉我,我有一个未定义变量,但我尝试了几种不同的定义方式,但它没有显示正确的年龄,它显示的是43岁。下面是我使用的代码:

$bdate= getdate('$_GET["bd"]');
if($bdate == 0){ $nodate = 1; }
$bdate = strtotime( $bdate );
$birthday = date("n/j/Y",$bdate);  //must be as m/d/yyyy
$bday = explode("/", $birthday); //parse
$b_mm = $bday[0]; //birthday month
$b_dd = $bday[1]; //birthday day
$b_yyyy = $bday[2]; //birthday year
//compare timestamps of mm/dd for birthday and today
$bday_mm_dd = mktime(0,0,0,$b_mm,$b_dd,0);
$today_mm_dd = mktime(0,0,0,date("m"),date("d"),0);
$age = date("Y", time()) - $b_yyyy;
if ($bday_mm_dd > $today_mm_dd) {
//birthday hasnt happened yet this year
$age = $age - 1;
}

只是为了澄清在我的sql语句我有出生日期列为bd。

如果有人能帮忙,我将不胜感激。

getdate()返回一个关联数组,而不是日期的文本表示形式。strtotime()无法理解这一点,并且第一次调用date()会将其时间戳参数解释为0,即UNIX纪元。

猜猜纪元是多少年前?:)

跳过strtotime(),只将$bdate[0]传递给date()。它将包含'bd'的epoch时间戳表示。