Java 根据生日获取年龄(周岁)。
/**
* @author zhnagzhixiang on 2020/8/4
*/
public class SysResourceServiceImpl {
// 根据年月日计算年龄,birthTimeString:"1994-11-14"
public static int getAgeFromBirthTime(String birthTimeString) {
// 先截取到字符串中的年、月、日
int selectYear = Integer.parseInt(birthTimeString.substring(0, 4));
int selectMonth = Integer.parseInt(birthTimeString.substring(4, 6));
int selectDay = Integer.parseInt(birthTimeString.substring(6, 8));
// 得到当前时间的年、月、日
Calendar cal = Calendar.getInstance();
int yearNow = cal.get(Calendar.YEAR);
int monthNow = cal.get(Calendar.MONTH) + 1;
int dayNow = cal.get(Calendar.DATE);
// 用当前年月日减去生日年月日
int yearMinus = yearNow - selectYear;
int monthMinus = monthNow - selectMonth;
int dayMinus = dayNow - selectDay;
int age = yearMinus;// 先大致赋值
if (yearMinus < 0) {// 选了未来的年份
age = 0;
} else if (yearMinus == 0) {// 同年的,要么为1,要么为0
if (monthMinus < 0) {// 选了未来的月份
age = 0;
} else if (monthMinus == 0) {// 同月份的
if (dayMinus < 0) {// 选了未来的日期
age = 0;
} else if (dayMinus >= 0) {
age = 1;
}
} else if (monthMinus > 0) {
age = 1;
}
} else if (yearMinus > 0) {
if (monthMinus < 0) {// 当前月>生日月
} else if (monthMinus == 0) {// 同月份的,再根据日期计算年龄
if (dayMinus < 0) {
} else if (dayMinus >= 0) {
age = age + 1;
}
} else if (monthMinus > 0) {
age = age + 1;
}
}
return age;
}
public static void main(String[] args) {
String birthTimeString[] = {
"20090929",
"20100505",
"20100222",
"20100510",
"20091206",
"20091014",
"20081123",
"20091116",
"20100712",
"20100531",
"20090808",
"20091025",
"20091018",
"20100610",
"20091101",
"20100120",
"20100408",
"20090707",
"20091212",
"20090916",
};
for (int i=0;i<birthTimeString.length;i++) {
System.out.println(getAgeFromBirthTime(birthTimeString[i]) - 1);
}
}
}