根据身份证号获取年龄 @param idNumber @return
(String idNumber)
| 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 条件 |
nothing calls this directly
no outgoing calls
no test coverage detected