我正在使用以下函数从给定的出生日期计算年龄,但如果使用闰年,即 29,它不会显示正确的差异。请帮我修复此代码。
<?php
function getAbsAge($birthday)
{
list($year,$month,$day) = explode("-", $birthday);
$year_diff = date("Y") - $year;
$month_diff = date("m") - $month;
$day_diff = date("d") - $day;
if ($day_diff < 0 || $month_diff < 0)
{
$year_diff--;
}
if ($year_diff == 0)
{
$interval = date_diff(date_create(), date_create($birthday));
$months = $interval->format("%M");
$days = $interval->format("%d");
if ($months > 0)
{
return $interval->format("%M Months %d Days");
}
else if ($months == 0 && $days > 1)
{
return $interval->format("%d Days");
}
else
{
return $interval->format("%d Day");
}
}
else if ($year_diff == 1)
{
return "$year_diff Year";
}
else if ($year_diff > 1)
{
return "$year_diff Years";
}
}
echo getAbsAge("2012-02-29")
?>
另外,如果有人可以提出更好的代码,请更新它。
如果一个人不到 1 岁,我需要以月和日为单位查找出生日期。
我的服务器上有最新的 5.4 php 版本。
随着 2012-02-29,它返回 2 年,而它应该是 3 年。请帮忙。