主要考虑到闰年的情况,如果有人出生在2.29,那么不是闰年则过了2.28将算上一岁。
function age($birth) { $age = array(); //$now = date('Ymd'); $now = "20110228"; //分解当前日期为年月日 $nowyear = (int) ($now / 10000); $nowmonth = (int) (($now % 10000) / 100); $nowday = $now % 100; //分解出生日期为年月日 $birthyear = (int) ($birth / 10000); $birthmonth = (int) (($birth % 10000) / 100); $birthday = $birth % 100; $year = $nowyear - $birthyear; if ($birthmonth>$nowmonth){ $year--; }else if($birthmonth==$nowmonth){ if($birthday==29&&$birthmonth=2){ /* if($nowyear>3200||($nowyear%3200==0&&$nowyear%172800==0)){ if($birthday>$nowday){ $year--; } }else if($nowyear==3200){ if (($birthday>$nowday)&&$nowday!=28){ $year--; } }else */ if ($nowyear%400==0||(($nowyear%4==0)&&($nowyear%100!=0))){ if($birthday>$nowday){ $year--; } } } } return $year; }