반응형
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);
/**
* 여기서부터 처리를 원하는 로직을 넣으면 됩니다.
*/
}
반응형