PHP计算年龄

版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/Lily_Song_8989/article/details/71079185
/**
     * 根据两个时间差获取年龄
     * @param int $birthday 出生日期 时间戳
     * @param int $time 当前时间 时间戳
     * @return string 8个月16天 or 1岁8个月
     *
     */
    private static function datediffage($birthday, $time)
    {
        $birthday = getDate($birthday);
        $time = getDate($time);
        $monthDays = array(
            1 => 31,
            2 => 28,
            3 => 31,
            4 => 30,
            5 => 31,
            6 => 30,
            7 => 31,
            8 => 31,
            9 => 30,
            10 => 31,
            11 => 30,
            12 => 31
        );
        $y = $m = $d = 0;
        //天相减为正
        if ($time['mday'] >= $birthday['mday']) { 
            //月相减为正
            if ($time['mon'] >= $birthday['mon']) {
                $y = $time['year'] - $birthday['year'];
                $m = $time['mon'] - $birthday['mon'];
            } else {
                 //月相减为负,借年
                $y = $time['year'] - $birthday['year'] - 1;
                $m = $time['mon'] - $birthday['mon'] + 12;
            }
            $d = $time['mday'] - $birthday['mday'];
            return ($y == 0 ? '' : $y . '岁') . ($m == 0 ? '' : $m . '个月') . ($d == 0 || $y > 0 ? '' : $d . '天');
        }
        //天相减为负,借月
        if ($time['mon'] == 1) { //1月,借年
            $y = $time['year'] - $birthday['year'] - 1;
            $m = $time['mon'] - $birthday['mon'] + 12;
            $d = $time['mday'] - $birthday['mday'] + $monthDays[12];
            return ($y == 0 ? '' : $y . '岁') . ($m == 0 ? '' : $m . '个月') . ($d == 0 || $y > 0 ? '' : $d . '天');
        }
        //3月,判断闰年取得2月天数
        if ($time['mon'] == 3) { 
            $d = $time['mday'] - $birthday['mday'] + ($time['year'] % 4 == 0 ? 29 : 28);
        } else {
            $d = $time['mday'] - $birthday['mday'] + $monthDays[$time['mon'] - 1];
        }
        //借月后,月相减为正
        if ($time['mon'] >= $birthday['mon'] + 1) { 
            $y = $time['year'] - $birthday['year'];
            $m = $time['mon'] - $birthday['mon'] - 1;
        } else { 
            //借月后,月相减为负,借年
            $y = $time['year'] - $birthday['year'] - 1;
            $m = $time['mon'] - $birthday['mon'] + 12 - 1;
        }
        return ($y == 0 ? '' : $y . '岁') . ($m == 0 ? '' : $m . '个月') . ($d == 0 || $y > 0 ? '' : $d . '天');
    }

猜你喜欢

转载自blog.csdn.net/Lily_Song_8989/article/details/71079185