본문 바로가기

KNOWHOW/front

javascript 에서 날짜 포멧 지정, 날짜계산하기

 

 

 

 

 

맨날 여기저기 찾아서 쓰다가 쓰다가 이제는 찾기 귀찮아서 일단 하나 만들어 놓고 쓰려고...

 

var date = {
 /**
  *
  * @param date 현재 날짜(yyyyMMddhhmm형식)
  * @param format (yyyyMMdd, yyyyMMddhhmm)
  * @param splitStr (ko 또는 split할 문자)
  * @returns {String}
  */
 convertStrToDateFormat : function(date, format, splitStr){
  var rtnDate = '';
  if("yyyyMMdd" == format){
   if(date.length >= 8){
    if("" == splitStr){
     rtnDate += date.substring(0, 4)+date.substring(4, 6)+date.substring(6, 8);
    }else{
     if("ko" == splitStr){
      rtnDate += date.substring(0, 4) + "년 ";
      rtnDate += date.substring(4, 6) + "월 ";
      rtnDate += date.substring(6, 8) + "일";
     }else{
      rtnDate += date.substring(0, 4) + splitStr;
      rtnDate += date.substring(4, 6) + splitStr;
      rtnDate += date.substring(6, 8);
     }
    }
   }else{
    rtnDate = date;
   }
  }else if("yyyyMMddHHmm" == format){
   if(date.length >= 12){
    if("" == splitStr){
     rtnDate += date.substring(0, 4)+date.substring(4, 6)+date.substring(6, 8)+date.substring(8,10)+date.substring(10,12);
    }else{
     if("ko" == splitStr){
      rtnDate += date.substring(0, 4) + "년 ";
      rtnDate += date.substring(4, 6) + "월 ";
      rtnDate += date.substring(6, 8) + "일 ";
      rtnDate += date.substring(8,10) + "시 ";
      rtnDate += date.substring(10,12) + "분 ";
     }else{
      rtnDate += date.substring(0, 4) + splitStr;
      rtnDate += date.substring(4, 6) + splitStr;
      rtnDate += date.substring(6, 8) + " ";
      rtnDate += date.substring(8,10) + ":";
      rtnDate += date.substring(10,12);
    }
    }
   }else{
    rtnDate = date;
   }
  }else{
   
  }
  return rtnDate;
 }
 /**
  * 날짜 계산
  * @param interval 계산할 날짜
  * @param field 계산할 년/월/일 YY/MM/DD
  * @param splitStr (ko 또는 구분할 문자)
  * @param format yyyyMMdd, yyyyMMddhh24miss
  * @returns {String}
  */
 , getIntervalDateWithFormat : function(splitStr, field, interval, format){
  var rtnStr = "";
  
  // 현재 날짜
  var curDate = new Date();
  var curYY = curDate.getFullYear();
  var curMM = curDate.getMonth() + 1; //Months are zero based
  var curDD = curDate.getDate();
  var curHH = curDate.getHours();
  var curMIN = curDate.getMinutes();
  var curSS = curDate.getSeconds();
  var curMS = curDate.getMilliseconds();
    
  // 현재 날짜 기준 날짜 +-
  if("YY" == field)   curYY += parseInt(interval);
  else if("MM" == field)  curMM += parseInt(interval);
  else if("DD" == field)  curDD += parseInt(interval);
  else if("HH" == field)  curHH += parseInt(interval);
  else if("MIN" == field)  curMIN += parseInt(interval);
  else if("SS" == field)  curSS += parseInt(interval);
  
  // +- 날짜
  var rtnDate = new Date();
  rtnDate.setFullYear(curYY, curMM, curDD);
  rtnDate.setHours(curHH, curMIN, curSS, curMS);
  
  // 자릿수 조정
  var rtnYY = rtnDate.getFullYear();
     var rtnMM = rtnDate.getMonth().toString().length == 1 ? "0" + rtnDate.getMonth() : rtnDate.getMonth();
     var rtnDD = rtnDate.getDate().toString().length == 1 ? "0" + rtnDate.getDate() : rtnDate.getDate();
     var rtnHH = rtnDate.getHours().toString().length == 1 ? "0" + rtnDate.getHours() : rtnDate.getHours();
     var rtnMIN = rtnDate.getMinutes().toString().length == 1 ? "0" + rtnDate.getMinutes() : rtnDate.getMinutes();
     var rtnSS = rtnDate.getMilliseconds().toString().length == 2 ? "0" + rtnDate.getMilliseconds() : rtnDate.getMilliseconds();
    
     // 리턴 스트링 생성
     if("" == splitStr){
      rtnStr = rtnYY+rtnMM+rtnDD;
      if("yyyyMMddhh24miss" == format){
       rtnStr += rtnHH+rtnMIN+rtnSS;
      }
     }else{
      if("ko" == splitStr){
       rtnStr = rtnYY + "년 " + rtnMM + "월 " + rtnDD + "일";
       if("yyyyMMddhh24miss" == format){
        rtnStr += " " + rtnHH  + "시 " + rtnMIN + "분 " + rtnSS + "초";
       }
      }else{
       rtnStr = rtnYY + splitStr + rtnMM + splitStr + rtnDD;
       if("yyyyMMddhh24miss" == format){
        rtnStr += " " + rtnHH  + ":" + rtnMIN + " " + rtnSS;
       }
      }
     }
    
     return rtnStr;
    
 }
};