반응형

JavaScript로 Input type의 날짜를 체크하는 함수들입니다.

isDate 함수

날짜 형식이 맞는지 체크하는 함수입니다.

입력값 형식은 yyyymmdd, yyyy-mm-dd, yyyy/mm/dd 3가지 사용을 할 수 있습니다.

function isDate(yyyymmdd) {

  // input
  // yyyymmdd, yyyy-mm-dd, yyyy/mm/dd
  // output
  // 0: 정상, 1: 해당월의 날짜 넘음, 2: 존재하지 않는 달, 3: 포맷 안맞음, 4: -인 날짜

  var y, m, d;

  if (yyyymmdd.length == 8) {
    if (!yyyymmdd.match(/[0-9]{8}/g))
      return 3;
    y = yyyymmdd.substring(0, 4);
    m = yyyymmdd.substring(4, 6);
    d = yyyymmdd.substring(6, 8);
  } else if (yyyymmdd.length == 10) {
    if (!yyyymmdd.match(/[0-9]{4}[-/][0-9]{2}[-/][0-9]{2}/g))
      return 3;

    y = yyyymmdd.split('-')[0];
    m = yyyymmdd.split('-')[1];
    d = yyyymmdd.split('-')[2];
  } else {
    return 3;
  }

  var limit_day;
  switch (eval(m)) {
    case 1:
    case 3:
    case 5:
    case 7:
    case 8:
    case 10:
    case 12:
      limit_day = 31;
      break;
    case 2:
      if ((y - 2008) % 4 == 0)
        limit_day = 29;
      else
        limit_day = 28;
      break;
    case 4:
    case 6:
    case 9:
    case 11:
        limit_day = 30;
        break;
    default:
      return 2;
      break;
    }
  if (eval(d) > limit_day) {
    return 1;
  }
  if (eval(d) < 1) {
    return 4;
  }
  return 0;
}

 

getDate함수

년도, 월, 일, 포맷값을 입력값으로 넣으면 원하는 날짜를 Date 형태로 가져옵니다.

function getDate(yyyy, mm, dd, format) {
  var today = new Date();

  var year = today.getFullYear();
  var month = today.getMonth();
  var day = today.getDate();

  var resultdate = new Date(yyyy+year, month+mm, day+dd);
  year =  resultdate.getFullYear();
  month = resultdate.getMonth();
  day = resultdate.getDate();

  month++;

  if(month < 10){
    month = "0" + month;
  }
  if(day < 10){
    day = "0" + day;
  }

  if(format == undefined){
    return year + "" + month + "" + day;
  }else{
    return year + format + month + format + day;
  }

}

 

dateCalc 함수

이 함수는 소스를 보시고 필요에 맞게 고쳐서 사용하시면 됩니다.

startObj : 시작날짜 입력 필드

endObj : 종료날짜 입력 필드

function dateCalc(startObj, endObj) {
  var startDt = startObj.val();

  startDt = startDt.replace(/-/gi,"");
  startDtyear = startDt.substring(0,4);
  startDtmm   = startDt.substring(4,6);
  startDtdd   = startDt.substring(6,8);
  startObj.val(startDtyear + startDtmm + startDtdd);

  /**
   * 1년후를 계산한 로직으로 필요한 로직으로 수정하여 사용하면 됩니다.
   */
  endObj.val(startDtyear-0+1 + startDtmm + startDtdd);

  var fulldate = startDtyear + startDtmm + startDtdd -0;
  var curDate  = getDate(0,0,0);	//현재날짜 month는 0~11
  var curYear  = curDate.substring(0,4);
  var curMonth = curDate.substring(4,6);
  var curday   = curDate.substring(6,8);

  /**
   * 여기서부터 처리를 원하는 로직을 넣으면 됩니다.
   */


}

 

자바스크립트로 날짜 형식이 맞는지 확인하는 화면

반응형

+ Recent posts