728x90

/**
* 나이 계산
* @param ssn : 주민등록번호 13자리 (예: "999999-1234567" or "9999991234567")
* @return int 나이
*/
public
static int calculateManAge(String ssn){

ssn = ssn.replaceAll("-", ""); //'-' 제거
if(ssn.length() < 7){ //7자리 보다 작으면
return 0;
}

String today = ""; //오늘 날짜
int manAge = 0; // 나이

SimpleDateFormat formatter = new SimpleDateFormat("yyyyMMdd");

today = formatter.format(new Date()); //시스템 날짜를 가져와서 yyyyMMdd 형태로 변환

//today yyyyMMdd
int todayYear = Integer.parseInt( today.substring(0, 4) );
int todayMonth = Integer.parseInt( today.substring(4, 6) );
int todayDay = Integer.parseInt( today.substring(6, 8) );

int ssnYear = Integer.parseInt( ssn.substring(0, 2) );
int ssnMonth = Integer.parseInt( ssn.substring(2, 4) );
int ssnDay = Integer.parseInt( ssn.substring(4, 6) );

if( ssn.charAt( 6 ) == '0' || ssn.charAt( 6 ) == '9' ){
ssnYear += 1800;
}else if( ssn.charAt( 6 ) == '1' || ssn.charAt( 6 ) == '2' ||
ssn.charAt( 6 ) == '5' || ssn.charAt( 6 ) == '6' ){
ssnYear += 1900;
}else { //3, 4, 7, 8
ssnYear += 2000;
}

manAge = todayYear - ssnYear;

if( todayMonth < ssnMonth ){ //생년월일 "월"이 지났는지 체크
manAge--;
}else if( todayMonth == ssnMonth ){ //생년월일 "일"이 지났는지 체크
if( todayDay < ssnDay ){
manAge--; //생일 안지났으면 (나이 - 1)
}
}

return manAge;
}

728x90

'JAVA' 카테고리의 다른 글

CallableStatement  (0) 2012.10.23
jstl if null  (0) 2012.09.26
httpsessionlistener  (0) 2012.09.03
자바 implements  (0) 2012.09.03
hashmap  (0) 2012.09.03

+ Recent posts