0

我有一个包含 3 列的数据库,全部为 VARCHAR(20)

dob_day
dob_month
dob_year

我如何将这些转换为 PHP 日期/时间戳并获取一个人的年龄(行)

例如,如果我有以下内容:

dob_day = 07
dob_month = 08
dob_year = 1994

这需要显示 19 因为用户将年满 19 岁

4

2 回答 2

3

您应该将出生日期存储为date. 此解决方案将从数据库端返回年龄:

SELECT TIMESTAMPDIFF(YEAR,CONCAT(dob_year, '-', dob_month, '-', dob_day),CURDATE()) AS `age`

结果

| 年龄 |
--------
| 19 |

查看演示

于 2013-09-03T18:32:50.597 回答
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

于 2013-09-03T18:27:51.660 回答