主要考虑到闰年的情况,如果有人出生在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;
}