PHP函数从日期算起年龄
使用以下函数可以计算出事件发生后已经过去了多少年。如果您想根据某人的生日确定其年龄,这将很有用。
该函数通过使用PHPstrtotime()函数标准化日期格式来工作。这是该功能的第一步,并根据日期是否有效进行排序。完成此操作后,日期将格式化为yyyy-mm-dd的标准格式,然后使用explode()函数将其拆分。然后从当前年份中减去输入日期的年份,以年为单位给出年龄。最后检查以确保日期尚未过去,并从年份值中减去一个以得出更准确的结果。这是函数:
function dateToAge($birthday){if (($cleaned = strtotime($birthday)) === false){
return false; // 格式不可读
};
list($year, $month, $day) = explode('-', date('Y-m-d', $cleaned));
$age = date('Y') - $year;
if (mktime(0,0,0,$month,$day,date('Y')) < mktime()){
// 生日还没过去,所以从年龄减去一年
$age--;
};
return $age;
}
这是正在使用的函数的示例:
echo '01/20/1980'.birthday('01/20/1980'); // prints 27
此功能有一个问题,就是您不确定日期是否采用标准格式。有些文化将日期设置为日/月,而其他文化则将日期设置为月/日。即使日期正确,这也可以使函数不返回任何内容。因此,以下内容:
echo '20-01-1979 '.birthday('20-01-1980');
返回false。
下面的函数通过尝试清除输入的日期来解决此问题,以便程序在最初不是有效日期时可以将其识别出来。
function dateToAge($birthday){if (($cleaned = strtotime($birthday)) === false){
if(strpos($birthday,'/')!==false){
$birthday = explode('/',$birthday);
if(count($birthday)==3){
$birthday = $birthday[1].'/'.$birthday[0].'/'.$birthday[2];
};
};
if(strpos($birthday,'-')!==false){
$birthday = explode('-',$birthday);
if(count($birthday)==3){
$birthday = $birthday[1].'-'.$birthday[0].'-'.$birthday[2];
};
};
if (($cleaned = strtotime($birthday)) === false){
return false; // 格式不可读
};
};
list($year, $month, $day) = explode('-', date('Y-m-d', $cleaned));
$age = date('Y') - $year;
if (mktime(0,0,0,$month,$day,date('Y')) < mktime()){
// 生日还没过去,所以从年龄减去一年
$age--;
};
return $age;
}
以上是 PHP函数从日期算起年龄 的全部内容, 来源链接: utcz.com/z/354452.html