0

我试图确定用户的确切年龄,根据他们的生日计算。

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

例子:

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

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

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

谢谢!

4

2 回答 2

2

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

if ($interval->m >= 6 ) {
    // it's $age + 1/2
}
于 2013-07-13T17:20:55.430 回答
2

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

/6 + truncate + /2就像/12只有 .0 或 .5 一样。

<?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

于 2013-07-13T17:24:07.287 回答