2013-07-13 207 views
0

我试图确定用户的确切年龄,计算出他们的出生日期。从出生日期计算确切年龄(使用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; 

谢谢!

回答

2

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

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

'$ interval-> M'不工作,这不是个月的总数。 'y * 12 + m'是。 –

+0

很高兴知道,但我仍然可以通过测试是否应该添加.5来判断它是否大于等于6,否? – billjamesdev

+0

好点。我仍然喜欢直接计算完整值,而不是做两个单独的计算。 –

2

计算出准确的几个月在您的时间间隔,然后除以6,截断,然后除以2

/6 + truncate + /2划分是像/12只有0.0或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