近日做项目时临时需要计算年龄,以前都是用户手输,这次是通过身份证号来计算

实话说以前还真没用日期计算过生日这种东西,挺小的需求,自己想了下好像两三行代码没法解决,也就网上搜了下直接用了

事后自己也仔细地想了下该怎么算:

首先年龄肯定是个整数,不能出现一半一半的数

年龄就是不能用天数算,因为一年的天数并不固定,考虑闰年算是扯远了,而且不能用日期差的时间戳直接算

根据自己映像中直观地讲,年龄不光考虑年,还要考虑日期,日子没到是不能算一岁的

然后我就想到其实可以设定一个基准日期,这个日期的年部分是当前年,日期就用生日,比如"2000-03-03"的基准日期就是"2019-03-03",可以用这个日期与当前日期进行比较,比现在大的画年龄就直接是当前年与生日年的差,比现在小的话差减1就是了

这样的话稍微梳理下思路,代码自然就写出来了:

<?php
function GetAge($Date){
$CheckTimeStamp=strtotime($Date);
$NowDate=date('Y-m-d');
$NowYear=substr($NowDate,0,4);
$BaseYear=$NowYear-date('Y',$CheckTimeStamp);
return $NowDate>=$NowYear.date('-m-d',$CheckTimeStamp)?$BaseYear:$BaseYear-1;
}
12-06 04:32