我有一个包含3列的数据库,所有VARCHAR(20)
dob_day
dob_month
dob_year
如何将这些转换为PHP日期/时间戳并获取人的年龄(行)
例如,如果我有以下内容:
dob_day = 07
dob_month = 08
dob_year = 1994
这需要显示19,因为用户将是19岁
答案 0 :(得分:3)
您应该将出生日期存储为date
。此解决方案将从数据库端返回年龄:
SELECT TIMESTAMPDIFF(YEAR,CONCAT(dob_year, '-', dob_month, '-', dob_day),CURDATE()) AS `age`
<强>结果强>
| AGE | ------- | 19 |
答案 1 :(得分:0)
试试这个:
$dob_day = '07';
$dob_month = '08';
$dob_year = '1994';
date_default_timezone_set('UTC');
$now = new DateTime(Date('Y-m-d'));
$diff = $now->diff(new DateTime($dob_month.'-'.$dob_day.'-'.$dob_year));
printf('%d years, %d month, %d days', $diff->y, $diff->m, $diff->d);
打印:19 years, 1 month, 26 days
如果你只是需要打印年份,这样的事情可能有用:
$dob_year = 1994;
date_default_timezone_set('UTC');
$now = new DateTime(Date('Y-m-d'));
$date = DateTime::createFromFormat("Y-m-d", Date("Y-m-d"));
$year = $date->format("Y");
echo $year - $dob_year;
打印:19