利用毫秒数就可以计算出一个人的年龄,众所周知,在Java中时间的起始位置是1900年凌晨算起,那我们可以用当前时间的毫秒数记为nowMills,减去出生日期的毫秒数记为birthMills,[(1900~now)-(1900~birth)],从数轴上来看,两者之差就是生活时长对应的毫秒数记为liveMills,
那么通过生活时长总数除以一年的总毫秒数记为yearMills,即可得到一个人的年龄。代码如下
/*
* 计算一个人的年龄
* birthMills为出生日期对应的毫秒数
* nowMills为当前时间对应的毫秒数
* liveMills为生活时长对应的毫秒数
* yearMills为一年时间对应的毫秒数*/
public Integer calcuAge(Date birthDay){
Calendar calendar = Calendar.getInstance();
if (calendar.before(birthDay)){
throw new IllegalArgumentException("当前时间早于出生时间");
}
Long birthMills = birthDay.getTime();
Calendar testDate = Calendar.getInstance();
/*测试数据,忽略即可
testDate.set(1998,9,8);
long testTime = testDate.getTimeInMillis();*/
Long nowMills = calendar.getTimeInMillis();
Long liveMills = nowMills - birthMills;
Long yearMills = (long)365*24*60*60*1000;
int age = (int) (liveMills / yearMills);
return age;
}