我对此感到非常愉快
。我试图让它将出生日期转换为年龄,然后基于年龄,最终我将指定某些问题,这些问题以基于年龄的形式显示。这是我现在开始工作的第一部分,我似乎无法弄清楚为什么它总是显示 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>";
你在这方面太努力了。您需要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
}
}