-1

次の関数を使用して、特定の生年月日から年齢を計算していますが、うるう年の日、つまり 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 年 2 月 29 日で、3 年になるはずの 2 年が戻ってきました。助けてください。

4

1 に答える 1