如果生日形式为mm / dd / yyyy,请写一个函数返回该人的年龄,如果今天是该人的生日,则返回true或false。
例如,由于今天是2015年1月23日,您的函数将返回以下内容:
getBirthDate(' 02 /一千九百七十五分之二十六&#39); //返回数组('年龄' => 39,'生日' => false);
getBirthDate(&#39 01 /一千九百九十四分之二十三&#39); //返回数组('年龄' => 21,'生日' => true);
这就是我所拥有的,我似乎无法找出为什么输出不会像我需要的那样出来。当我运行此代码时,没有显示输出,但我无法弄清楚我做错了什么。我想要它做的是当它运行时,它应该输出年龄,如果该日期是人的生日,则输出真或假。但是每当我运行这段代码时,输出总是空白的,或者只是说Array。我很感激任何帮助或建议来解决这个问题!谢谢!
<?php
function getBirthDate($birthdate)
{
$agebirthday = array();
list($D, $M, $Y) = explode("/", $birthdate);
$YearDifference = date("y") - $Y;
if (date("m") == $M && (date("d") == $D))
{
$Birthday = true;
}
else {
$Birthday = false;
}
array_push($agebirthday, array(
"age" => $YearDifference,
"birthday" => $Birthday));
return $agebirthday;
}
$output = getBirthDate($birthdate);
echo $output['age'];
echo $output['birthday'];
?>
答案 0 :(得分:0)
这是我的版本,我改变了一些事情:
function getBirthDate($birthdate)
{
list($D, $M, $Y) = explode('/', $birthdate);
$YDiff = date('Y') - $Y;
// the line below is optional, you may wish to count complete years age or not
if(date("md") < $M.$D) $YDiff --; // if it's BEFORE birthday
return [
"age" => $YDiff,
"birthday" => date('md') == $M.$D
];
}
$output = getBirthDate('28/05/1981');
var_dump($output['age']);
var_dump($output['birthday']);
为我的生日给我们正确答案:
int(33)
bool(false)
答案 1 :(得分:0)
使用strtotime()函数。它将日期转换为一个大整数,表示1970年和指定日期之间经过的秒数,然后从time()函数的值中减去该值,以获得时差的秒数。然后在结果上使用除法来获得所需的数字。
例如:
$seconds_old=time()-strtotime("02/26/1975");
然后你可以这样做:
$minutes_old=$seconds_old / 60;
$hours_old=$minutes_old / 60;
$days_old=$hours_old / 24;
$years_old=$days_old / 365;
如果精度太高,那就研究一下intval()函数。
答案 2 :(得分:-1)
在您的代码中,更改
array_push($agenbirthday, array(
"age" => $YDiff,
"birthday" => $Birthday));
到
$agenbirthday = array(
"age" => $YDiff,
"birthday" => $Birthday);