javaScript 날자 형식체크
Programming/JavaScript
2020. 12. 31. 12:03
반응형
- 입력형식 : YYYYMMDD , YYYY/MM/DD , YYYY-MM-DD
- 결과 : 0(날자형식), 1(날자형식 아님)
<!doctype html>
<html lang="en">
<head>
<meta charset="UTF-8">
<meta name="Generator" content="EditPlus®">
<title>JS Data Chaek</title>
</head>
<body>
<script type="text/javascript">
<!--
var yyyymmdd = '20201231';
alert('yyyymmdd : '+yyyymmdd + ' > isDate = ' +isDate(yyyymmdd) );
yyyymmdd = '2020-12-31';
alert('yyyymmdd : '+yyyymmdd + ' > isDate = ' +isDate(yyyymmdd) );
yyyymmdd = '2020/12/31';
alert('yyyymmdd : '+yyyymmdd + ' > isDate = ' +isDate(yyyymmdd) );
yyyymmdd = '00201231';
alert('yyyymmdd : '+yyyymmdd + ' > isDate = ' +isDate(yyyymmdd) );
yyyymmdd = '20201331';
alert('yyyymmdd : '+yyyymmdd + ' > isDate = ' +isDate(yyyymmdd) );
yyyymmdd = '20201232';
alert('yyyymmdd : '+yyyymmdd + ' > isDate = ' +isDate(yyyymmdd) );
/*
* 날자 입력 제한 형식 " YYYYMMDD, YYYY-MM-DD, YYYY/MM/DD
* return > 0: 정상, 1: 날자형식 아님.
*/
function isDate(yyyymmdd) {
var yy, mm, dd, splitStr = '-';
// 8자리로 입력된 경우,
if (yyyymmdd.length == 8)
{
if (!yyyymmdd.match(/[0-9]{8}/g))
{
alert('is not date');
return 1; // 입력값 오류
}
yy = yyyymmdd.substring(0, 4);
mm = yyyymmdd.substring(4, 6);
dd = yyyymmdd.substring(6, 8);
}
// 10자리 입력
else if (yyyymmdd.length == 10)
{
if (!yyyymmdd.match(/[0-9]{4}[-/][0-9]{2}[-/][0-9]{2}/g))
{
alert('is not date');
return 1; // 입력값 오류
}
if(yyyymmdd.indexOf('/')>0) splitStr = '/';
yy = yyyymmdd.split(splitStr)[0];
mm = yyyymmdd.split(splitStr)[1];
dd = yyyymmdd.split(splitStr)[2];
}
// 그외 . 입력형식 에러 YYYYMMDD, YYYY-MM-DD, YYYY/MM/DD 형태만가능
else
{
return 1;
}
// 1000년 이하인 경우 에러처리
if(eval(yy)<1000)
{
alert('is not year');
return 1; // 입력값 오류
}
// 해당월이 1보다 작거나 12보다 큰 겨우.
if (eval(mm) < 1 || eval(mm) > 12)
{
alert('is not month');
return 1;
}
// 해당월의 마지막 날자
var limit_day;
switch (eval(mm))
{
case 2:
if ((yy - 2008) % 4 == 0) limit_day = 29;
else limit_day = 28;
break;
case 4: case 6: case 9: case 11:
limit_day = 30;
break;
default: // 1 ,3, 5, 7, 8, 10, 12
limit_day = 31;
break;
}
// 해당월의 날자 초과 하거나, 해당일의 수가 1보다 작은 경우
if (eval(dd) > limit_day || eval(dd) < 1)
{
alert('is not day');
return 1;
}
return 0;
}
//-->
</script>
</body>
</html>
반응형