반응형
# 배경
기부금영수증을 신청할 때 14세 미만인 경우는 법적 대리인이 동의가 필요하다. 그래서 나이를 체크하는 코드를 만들었다.
# 코드
func CheckUnderTheAgeOfFourteen(birthDate string, seventhDigit int64) bool {
birthMonth := birthDate[2:4] // 생월(MM)
birthDay := birthDate[4:6] //생일
birthYear, _ := strconv.Atoi(birthDate[:2])
if seventhDigit == 1 || seventhDigit == 2 || seventhDigit == 5 || seventhDigit == 6 {
birthYear = 1900 + birthYear
}
if seventhDigit == 3 || seventhDigit == 4 || seventhDigit == 7 || seventhDigit == 8 {
birthYear = 2000 + birthYear
}
// 생년월일 문자열을 시간 형식으로 변환
birthDateStr := fmt.Sprintf("%d%s%s", birthYear, birthMonth, birthDay)
birthDate8, _ := time.Parse("20060102", birthDateStr)
if birthDate8.Format("20060102") <= time.Now().Format("20060102") {
// 현재 시간과 비교하여 14세 미만인지 확인
ageLimit := time.Now().AddDate(-14, 0, 0) // 현재로부터 14년 전
birthDate8.After(ageLimit)
return birthDate8.After(ageLimit)
} else {
return false
}
}
- CheckUnderTheAgeOfFourteen()에 생년월일 6자리(birthDate)와 주민등록번호 7번째자리 숫자(seventhDigit) 입력한다.
- 생년월일 6자리를 년, 월, 일로 나눈다.
- 7번째 자리를 보고 1900년대생인지 2000년대생인지 확인을 해서 연도를 4자리로 만들어 준다.
- 생년월일은 현재 문자열이니까 time 타입으로 변경한다.
- 생년월일이 오늘이거나 과거인지 체크 한다. 맞으면 14세미만인지 아닌지 체크 한다.
- 생년월일이 미래이면 false를 리턴한다.
- false : 14세 미만 아니다.
- true : 14세 미만이다.
# 이슈
https://github.com/YooGenie/go-study/issues/80
반응형
'Study > Go 언어' 카테고리의 다른 글
[Golang] 만 나이 구하는 코드 (0) | 2023.09.12 |
---|---|
[Golang] 스웨거(Swagger) 사용하기 (0) | 2023.09.04 |
[Golang] Xorm에 AllCols() 이걸 사용할 때 bool 타입은 업데이트가 안된다. (0) | 2023.08.02 |
[Golang] interface{} => struct 변환하기 (0) | 2023.07.22 |
[Golang] 슬랙(Slack)으로 메시지 보내기 (0) | 2023.07.14 |