관리 메뉴

투덜이 개발자

[Javascript] 생년월일 (만)나이 계산, 생년월일 유효성 검사 본문

Program Language/JavaScript & Jquery

[Javascript] 생년월일 (만)나이 계산, 생년월일 유효성 검사

엠투 2022. 2. 4. 00:54
반응형
// 생년월일 실제 나이 개산
function age(birthday) {
   const year = Number(birthday.substr(0, 4)); // 입력한 값의 0~4자리까지 (연)
   
   let today = new Date(); // 오늘 날짜를 가져옴
   let yearNow = Number(today.getFullYear()); // Date 객체의 년도를 가져옵니다.
   let age = Number(yearNow - year + 1);  // 소수점 버림

   return age;
}

// 생년월일 만 나이 개산
function age_kor(birthday) {

   birthday = Number(birthday.replace(/-/gi,'')); // '-' 문자 모두 '' 변경
   
   let today = new Date(); // 오늘 날짜를 가져옴
   let yearNow = String(today.getFullYear()); // Date 객체의 년도를 가져옵니다.
   let monthNow = String(today.getMonth() + 1); // 객체의 월 정보를 가져옵니다. 1월은 0으로 표현됨을 주의해야 합니다. (0~11)
   let dayNow = String(today.getDate()); // Date 객체의 일자 정보를 가져옵니다. (0~31)
   
   monthNow = (monthNow < 10) ? '0' + monthNow : monthNow;
   dayNow = (dayNow < 10) ? '0' + dayNow : dayNow;
   
   today = Number(yearNow + monthNow + dayNow);   // 오늘날짜 숫자형으로 변환

   let age = Math.floor((today - birthday) / 10000);  // 소수점 버림
   
   // console.log(age);
   return age;
}

// 생년월일 유효성 검사
function birthdayCheck(birthday) {
   birthday = birthday.replace(/-/gi,''); // '-' 문자 모두 '' 변경

   const year = Number(birthday.substr(0, 4)); // 입력한 값의 0~4자리까지 (연)
   const month = Number(birthday.substr(4,2)); // 입력한 값의 4번째 자리부터 2자리 숫자 (월)
   const day = Number(birthday.substr(6,2)); // 입력한 값 6번째 자리부터 2자리 숫자 (일)
   const today = new Date(); // 오늘 날짜를 가져옴
   const yearNow = today.getFullYear(); // 올해 연도 가져옴
   
   if (birthday.length <=8) {
      if (1900 > year || year > yearNow){    // 연도의 경우 1900 보다 작거나 yearNow 보다 크다면 false를 반환합니다.
         return false;
      } else if (month < 1 || month > 12) {
         return false;
      } else if (day < 1 || day > 31) {
         return false;
      } else if ((month==4 || month==6 || month==9 || month==11) && day==31) {
         return false;
      } else if (month == 2) { // 2월달일때
         // 2월 29일(윤년) 체크
         const isleap = (year % 4 == 0 && (year % 100 != 0 || year % 400 == 0));
         if (day>29 || (day==29 && !isleap)) {
            return false;
         } else {
            return true;
         } //end of if (day>29 || (day==29 && !isleap))
      } else {
         return true;
      }//end of if
   } else { // 입력된 생년월일이 8자 초과할때 : false
      return false;
   }
}
반응형