주민등록번호로 만 나이 계산하기 유틸을 짜보았습니다.
일단 입력받는값을가지고 처리를 하게됩니다.
여기서 key point는
생년월일 앞 2자리 뒷번호 첫번째 자리입니다.
뒷번호 첫번째자리로 태어난 년도를 결정하는데요
1900년대 생은 뒷번호 첫번째 자리가 1,2 이고
1800년대 생은 뒷번호 첫번째 자리가 0,9 이고
2000년대 생은 뒷번호 첫번째 자리가 3,4 입니다.
이렇게 구분을 하는것을 전 처음알았어요 ㅎㅎ
저는 뒷자리가 1이고 여자는2여서 남자 여자만 구분하는줄 알았는데 아니더라구요!!
그래서
일단 util로 저는 6자리 7자리 받아서 사용했고 통으로 13자리 받아서 잘라주셔도 됩니다.
public class AgeUtil {
public int getInternationalAge(String rrnoFront, String rrnoBack) {
// 오늘 날짜
LocalDate today = LocalDate.now();
int todayYear = today.getYear();
int todayMonth = today.getMonthValue();
int todayDay = today.getDayOfMonth();
// 주민등록번호를 통해 입력 받은 날짜(형변환 String이여서 int로 변환해줬습니다)
int year = Integer.parseInt(rrnoFront.substring(0,2));
int month = Integer.parseInt(rrnoFront.substring(2,4));
int day = Integer.parseInt(rrnoFront.substring(4,6));
// 주민등록번호 뒷자리로 몇년대인지 알고 년도를 더해줬습니다.
String gender = rrnoBack.substring(0,1);
if(gender.equals("1") || gender.equals("2")) {
year += 1900;
} else if(gender.equals("3") || gender.equals("4")) {
year += 2000;
} else if(gender.equals("0") || gender.equals("9")) {
year += 1800;
}
// 올해 - 태어난년도
int internationalAge = todayYear - year;
// 생일이 안지났으면 - 1
if(month > todayMonth) {
internationalAge--;
} else if(month == todayMonth) {
if(day > todayDay) {
internationalAge--;
}
}
return internationalAge;
}
}
그래서 컨트롤러에서 위에 유틸을 불러와서 사용해줬습니다.
private static final AgeUtil ageUtil = new AgeUtil();
int age = ageUtil.getInternationalAge(rrnoF,rrnoB)
요렇게해서 age 값을 가져왔네요!
'spring' 카테고리의 다른 글
CI/CD 란 무엇인가? (0) | 2023.04.25 |
---|---|
spring boot 에서 Entity를 응답 메소드나 요청 메소드에서 사용하지 않는이유(ft.CAHT GPT) (0) | 2023.04.11 |