我对此感到很沮丧。我试图让它将出生日期转换为年龄,然后根据年龄,最终我将指定某些基于年龄的形式显示的问题。这是我现在开始研究的第一部分,我似乎无法弄清楚为什么它总是显示0-6个月,即使它应该是7-12个月。
编辑,因为我编写了我已经过去的代码@ _ @。
我用于生日的代码一直是0或者什么的。我不确定。
可能是圆形还是不能使用“0.5”的东西?
<?php
$birthDate = "2/17/2015";
$birthDate = explode("/", $birthDate);
$age = (date("md", date("U", mktime(0, 0, 0, $birthDate[0], $birthDate[1], $birthDate[2]))) > date("md")
? ((date("Y") - $birthDate[2]) - 1)
: (date("Y") - $birthDate[2]));
if($age <= 0.5){
echo "0-6 Months";
}
elseif($age > 0.5 && $age < 1) {
echo "7-12 Months Old";
}
elseif($age >= 1 && $age < 3) {
echo "1-2 Years Old";
}
elseif($age >= 2 && $age < 5) {
echo "2-4 Years";
}
elseif($age >= 1 && $age < 3) {
echo "5-8 Years Old";
}
elseif($age >= 2 && $age < 5) {
echo "9-11 Years";
}
elseif($age >= 1 && $age < 3) {
echo "12-17 Years Old";
}
elseif ($age >= 18 && $age < 65) {
echo "Adult";
}
elseif ($age >= 65){
echo "Senior";
}
else {
echo "Whoops!";
}
echo "</br></br>";
答案 0 :(得分:-1)
你在这方面的工作太过努力了。您需要DateTime
课程。然后你可以做这样的事情:
$birthDate = new DateTime("2/17/2015");
$now = new DateTime();
$interval = $birthDate->diff($now);
echo $interval->format('%y years and %a days'); // 0 years and 331 days
$years = $interval->format('%y');
$days = $interval->format('%a');
if ($years == 0) {
echo ($days < 183) ? '0-6 months' : '7-12 months';
}
else {
switch ($years) {
case < 3:
echo '1-2 years old';
case < 5:
echo '2-4 years old';
// etc
}
}