我有一个数据库,可以比较一个人的出生日期和当前日期,以便在给定时间内获得该人的年龄。
我使用以下代码将它们转换为年龄
$datetime_date = date("d-m-Y");
$time_diff = abs(strtotime($datetime_date) - strtotime($birthdate));
$years = floor($time_diff / (365*60*60*24));
$months = floor(($time_diff - $years * 365*60*60*24) / (30*60*60*24));
$days = floor(($time_diff - $years * 365*60*60*24 - $months*30*60*60*24)/ (60*60*24));
if ($years > 0) {$new_age = "$years year $months month";}
elseif (($years == 0) && ($months > 0)) {$new_age = "$months month $days day";}
elseif (($years == 0) && ($months == 0)) {$new_age = "$days day of life";}
我已将数据库中的年龄保存为: (数字)年(数字)月OR (数字)月(数)天OR (数字)天
目前,我想将它们分组到年龄组,所以我需要将它们转换回数字进行比较
例如: 小组年龄< 1年 团体年龄1-12岁 团体年龄12-60岁等
有人可以建议如何将年龄(时间段)转换回数字格式或unix格式以便于比较吗?
答案 0 :(得分:0)
您可以将字段转换回秒数
$new_age_split = explode(" ",$new_age);
if ($new_age_split[1] == 'year')
{
$age = (($new_age_split[0] * 365) + ($new_age_split[2] * 30) + $new_age_split[4]) * 24*60*60
}
else
{
if ($new_age_split[1] == 'month')
{
$age = (($new_age_split[0] * 30) + $new_age_split[2] ) * 24*60*60
}
else
if ($new_age_split[1] == 'day')
{
$age = ($new_age_split[0]) * 24*60*60
}
然后您可以使用new DateTime(date("U") - $age)
或date_create(date("U") - $age)
,具体取决于您需要对输出执行的操作
答案 1 :(得分:0)
使用DateTime
和DateInterval
类;它们使您的工作更轻松:
$birthdate = new DateTime('1997-09-14');
$today = new DateTime('now');
$diff = $today->diff($birthdate);
echo('Age: '.$diff->y."\n");
print_r($diff);