一个很简单的需求,已知一个身份证或者日期,判断对应的人是否满了18岁。
网上有很多方法,有的就是直接按天算是否 大于 18年 乘以 365天,这些都可能不准确,毕竟存在闰年啊,闰月的,于是我自己写了一个:
public static boolean checkAdult(Date date) {
Calendar current = Calendar.getInstance();
Calendar birthDay = Calendar.getInstance();
birthDay.setTime(date);
Integer year = current.get(Calendar.YEAR) - birthDay.get(Calendar.YEAR);
if (year > 18) {
return true;
} else if (year < 18) {
return false;
}
// 如果年相等,就比较月份
Integer month = current.get(Calendar.MONTH) - birthDay.get(Calendar.MONTH);
if (month > 0) {
return true;
} else if (month < 0) {
return false;
}
// 如果月也相等,就比较天
Integer day = current.get(Calendar.DAY_OF_MONTH) - birthDay.get(Calendar.DAY_OF_MONTH);
return day >= 0;
}
这样就能准确判断是否成年了
网友评论