MCPcopy Create free account
hub / github.com/Bit0r/java-util / getAgeByIDNumber

Method getAgeByIDNumber

src/main/java/util/CommonUtils.java:592–627  ·  view source on GitHub ↗

根据身份证号获取年龄 @param idNumber @return

(String idNumber)

Source from the content-addressed store, hash-verified

590 * @return
591 */
592 public static int getAgeByIDNumber(String idNumber){
593 int invalidAge = -1;
594 String dateStr;
595 if (idNumber.length() == 15) {
596 dateStr = "19" + idNumber.substring(6, 12);
597 } else if (idNumber.length() == 18) {
598 dateStr = idNumber.substring(6, 14);
599 } else {//默认是合法身份证号,但不排除有意外发生
600 return invalidAge;
601 }
602 SimpleDateFormat simpleDateFormat = new SimpleDateFormat("yyyyMMdd");
603 try {
604 Date birthday = simpleDateFormat.parse(dateStr);
605 Calendar calendar = Calendar.getInstance();
606 if (calendar.getTimeInMillis() - birthday.getTime() < 0L) {
607 return invalidAge;
608 }
609 int yearNow = calendar.get(Calendar.YEAR);
610 int monthNow = calendar.get(Calendar.MONTH);
611 int dayOfMonthNow = calendar.get(Calendar.DAY_OF_MONTH);
612 calendar.setTime(birthday);
613 int yearBirthday = calendar.get(Calendar.YEAR);
614 int monthBirthday = calendar.get(Calendar.MONTH);
615 int dayOfMonthBirthday = calendar.get(Calendar.DAY_OF_MONTH);
616
617 int age = yearNow - yearBirthday;
618
619
620 if (monthNow <= monthBirthday && monthNow == monthBirthday && dayOfMonthNow < dayOfMonthBirthday || monthNow < monthBirthday) {
621 age--;
622 }
623 return age;
624 } catch (ParseException e) {
625 return invalidAge;
626 }
627 }
628
629 /**
630 * in 条件

Callers

nothing calls this directly

Calls

no outgoing calls

Tested by

no test coverage detected