根据出生日期计算准确的年龄(1/2)


Calculate exact age from birthdate (with 1/2)

我正试图根据用户的出生日期来确定他们的确切年龄。

我需要能够判断他们今年是否有1/2。

示例:

  • 1983年8月17日->29 1/2
  • 1983年5月21日->30

以下是我目前用于年龄计算功能的内容:

$birthday = new DateTime($birthday);
$interval = $birthday->diff(new DateTime);
$age = $interval->y;

谢谢!

似乎可以只测试区间的m部分。

if ($interval->m >= 6 ) {
    // it's $age + 1/2
}

计算间隔中的确切月份,然后除以6,截断,然后除以2。

/6 + truncate + /2类似于只有.0或.5的/12

<?php 
$birthday = new DateTime('08/17/1983');
$interval = $birthday->diff(new DateTime);
$age = floor((($interval->y * 12) + $interval->m) / 6) / 2;
//To display with floating point
echo $age;
echo '<br />';
//To display with "1/2"
echo floor($age) . (fmod($age, 1) == 0.5 ? ' 1/2' : '');
?>

结果:29.529 1/2

演示:http://phpfiddle.org/main/code/m7c-uck