/**
* 만나이 계산
* @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;
}
'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 |