Service
@Override
public int insertEmp(EmpVO vo) {
String birthday = vo.getTempRegno(); // 프론트에서 입력받은 생년월일
String frontDigits = getFrontDigits(birthday); // 주민등록번호 앞자리 (950101)
String bir = birthday.replaceAll("[^\\w+]", ""); // 생년월일에서 '-' 제거
vo.setEmpRegno1(Integer.valueOf(frontDigits));
vo.setEmpAge(getAmericanAge(bir));
encryptBoard(vo);
return dao.insertEmp(vo);
}
private int getAmericanAge(String birthDate) { // 생년월일로 나이 구하기
LocalDate now = LocalDate.now();
LocalDate parsedBirthDate = LocalDate.parse(birthDate, DateTimeFormatter.ofPattern("yyyyMMdd"));
int americanAge = now.minusYears(parsedBirthDate.getYear()).getYear(); // (1)
// (2)
// 생일이 지났는지 여부를 판단하기 위해 (1)을 입력받은 생년월일의 연도에 더한다.
// 연도가 같아짐으로 생년월일만 판단할 수 있다!
if (parsedBirthDate.plusYears(americanAge).isAfter(now)) {
americanAge = americanAge -1;
}
return americanAge;
}
private String getFrontDigits(String birthday) { // 생년월일을 주민등록번호 앞자리로 바꿔주기
SimpleDateFormat format = new SimpleDateFormat("yyyy-MM-dd");
try {
Date date = format.parse(birthday);
int year = date.getYear() % 100; // 연도의 뒤 2자리
int month = date.getMonth() + 1; // 월
int day = date.getDate(); // 일
String monthString = String.format("%02d", month); // 월을 2자리로 포맷팅
String dayString = String.format("%02d", day); // 일을 2자리로 포맷팅
return String.format("%02d%02d%02d", year, month, day);
} catch (Exception e) {
e.printStackTrace();
}
return null;
}
'자바' 카테고리의 다른 글
날짜 형식 변환 메소드 (0) | 2023.08.24 |
---|---|
Zxing 라이브러리 사용하기 (0) | 2023.05.01 |
댓글