/*************************************************************************
************************* 일자 관련 함수 *******************************
**************************************************************************/ /*************************************************************************
함수명 : isValidMonth
기 능 : 유효한(존재하는) 월(月)인지 체크
인 수 : mm - 체크하고자 하는 스트링(월)
리턴값 :
**************************************************************************/
function isValidMonth(mm) {
var m = parseInt(mm,10);
return (m >= 1 && m <= 12);
}
/*************************************************************************
함수명 : isValidDay
기 능 : 유효한(존재하는) 일(日)인지 체크
인 수 : yyyy, mm, dd - 체크하고자 하는 년, 월, 일
리턴값 :
**************************************************************************/
function isValidDay(yyyy, mm, dd) {
var m = parseInt(mm,10) - 1;
var d = parseInt(dd,10);
var end = new Array(31,28,31,30,31,30,31,31,30,31,30,31);
if ((yyyy % 4 == 0 && yyyy % 100 != 0) || yyyy % 400 == 0) {
end[1] = 29;
}
return (d >= 1 && d <= end[m]);
}
/*************************************************************************
함수명 : isValidHour
기 능 : 유효한(존재하는) 시(時)인지 체크
인 수 : hh - 체크하고자 하는 스트링(시)
리턴값 :
**************************************************************************/
function isValidHour(hh) {
var h = parseInt(hh,10);
return (h >= 0 && h <= 24);
}
/*************************************************************************
함수명 : isValidMin
기 능 : 유효한(존재하는) 분(分)인지 체크
인 수 : mi - 체크하고자 하는 스트링(분)
리턴값 :
**************************************************************************/
function isValidMin(mi) {
var m = parseInt(mi,10);
return (m >= 0 && m <= 60);
}
/**
* Time 형식인지 체크(느슨한 체크)
*/
function isValidTimeFormat(time) {
return (!isNaN(time) && time.length == 12);
}
/**
* 유효하는(존재하는) Time 인지 체크
* ex) var time = form.time.value; //'200102310000'
* if (!isValidTime(time)) {
* alert("올바른 날짜가 아닙니다.");
* }
*/
function isValidTime(time) {
var re = /-/g
time = time.replace(re,"");
var re = /:/g
time = time.replace(re,"");
var year = time.substring(0,4);
var month = time.substring(4,6);
var day = time.substring(6,8);
var hour = time.substring(8,10);
var min = time.substring(10,12);
if (parseInt(year,10) >= 1900 && isValidMonth(month) &&
isValidDay(year,month,day) && isValidHour(hour) &&
isValidMin(min)) {
return true;
}
return false;
}
/**
* 유효하는(존재하는) Time 인지 체크
* ex) var time = form.time.value; //'2001023'
* if (!isValidDate(time)) {
* alert("올바른 날짜가 아닙니다.");
* }
*/
function isValidDate(time) {
var re = /-/g
time = time.replace(re,"");
var year = time.substring(0,4);
var month = time.substring(4,6);
var day = time.substring(6,8);
if (parseInt(year,10) >= 1000 && isValidMonth(month) &&
isValidDay(year,month,day)) {
return true;
}
return false;
}
/**
* 유효하는(존재하는) Time 인지 체크
* ex) var time = form.time.value; //'2001'
* if (!isValidDate1(time)) {
* alert("올바른 날짜가 아닙니다.");
* }
*/
function isValidDate1(time) {
var re = /-/g
time = time.replace(re,"");
var year = '';
var month = '01';
var day = '01';
if (time.length >= 8) {
year = time.substring(0,4);
month = time.substring(4,6);
day = time.substring(6,8);
} else if (time.length >= 6) {
year = time.substring(0,4);
month = time.substring(4,6);
} else if (time.length >= 4) {
year = time.substring(0,4);
} else {
return false;
}
if (parseInt(year,10) >= 1000 && isValidMonth(month) &&
isValidDay(year,month,day)) {
return true;
}
return false;
}
/**
* Time 스트링을 자바스크립트 Date 객체로 변환
* parameter time: Time 형식의 String
*/
function toTimeObject(time) { //parseTime(time)
var year = time.substr(0,4);
var month = time.substr(4,2) - 1; // 1월=0,12월=11
var day = time.substr(6,2);
var hour = time.substr(8,2);
var min = time.substr(10,2);
return new Date(year,month,day,hour,min);
}
/**
* 자바스크립트 Date 객체를 Time 스트링으로 변환
* parameter date: JavaScript Date Object
*/
function toTimeString(date) { //formatTime(date)
var year = date.getFullYear();
var month = date.getMonth() + 1; // 1월=0,12월=11이므로 1 더함
var day = date.getDate();
var hour = date.getHours();
var min = date.getMinutes();
if (("" + month).length == 1) { month = "0" + month; }
if (("" + day).length == 1) { day = "0" + day; }
if (("" + hour).length == 1) { hour = "0" + hour; }
if (("" + min).length == 1) { min = "0" + min; }
return ("" + year + month + day + hour + min)
}
/**
* Time이 현재시각 이후(미래)인지 체크
*/
function isFutureTime(time) {
return (toTimeObject(time) > new Date());
}
/**
* Time이 현재시각 이전(과거)인지 체크
*/
function isPastTime(time) {
return (toTimeObject(time) < new Date());
}
/**
* 주어진 Time 과 y년 m월 d일 h시 차이나는 Time을 리턴
* ex) var time = form.time.value; //'20000101000'
* alert(shiftTime(time,0,0,-100,0));
* => 2000/01/01 00:00 으로부터 100일 전 Time
*/
function shiftTime(time,y,m,d,h) { //moveTime(time,y,m,d,h)
var date = toTimeObject(time);
date.setFullYear(date.getFullYear() + y); //y년을 더함
date.setMonth(date.getMonth() + m); //m월을 더함
date.setDate(date.getDate() + d); //d일을 더함
date.setHours(date.getHours() + h); //h시를 더함
return toTimeString(date);
}
/**
* 두 Time이 몇 개월 차이나는지 구함
* time1이 time2보다 크면(미래면) minus(-)
*/
function getMonthInterval(time1,time2) { //measureMonthInterval(time1,time2)
var date1 = toTimeObject(time1);
var date2 = toTimeObject(time2);
var years = date2.getFullYear() - date1.getFullYear();
var months = date2.getMonth() - date1.getMonth();
var days = date2.getDate() - date1.getDate();
return (years * 12 + months + (days >= 0 ? 0 : -1) );
}
/**
* 두 Time이 며칠 차이나는지 구함
* time1이 time2보다 크면(미래면) minus(-)
*/
function getDayInterval(time1,time2) {
var date1 = toTimeObject(time1);
var date2 = toTimeObject(time2);
var day = 1000 * 3600 * 24; //24시간
return parseInt((date2 - date1) / day, 10);
}
/**
* 두 Time이 몇 시간 차이나는지 구함
* time1이 time2보다 크면(미래면) minus(-)
*/
function getHourInterval(time1,time2) {
var date1 = toTimeObject(time1);
var date2 = toTimeObject(time2);
var hour = 1000 * 3600; //1시간
return parseInt((date2 - date1) / hour, 10);
}
/**
* 현재 시각을 Time 형식으로 리턴
*/
function getCurrentTime() {
return toTimeString(new Date());
}
/**
* 현재 시각과 y년 m월 d일 h시 차이나는 Time을 리턴
*/
function getRelativeTime(y,m,d,h) {
/*
var date = new Date();
date.setFullYear(date.getFullYear() + y); //y년을 더함
date.setMonth(date.getMonth() + m); //m월을 더함
date.setDate(date.getDate() + d); //d일을 더함
date.setHours(date.getHours() + h); //h시를 더함
return toTimeString(date);
*/
return shiftTime(getCurrentTime(),y,m,d,h);
}
/**
* 현재 年을 YYYY형식으로 리턴
*/
function getYear() {
/*
var now = new Date();
return now.getFullYear();
*/
return getCurrentTime().substr(0,4);
}
/**
* 현재 月을 MM형식으로 리턴
*/
function getMonth() {
/*
var now = new Date();
var month = now.getMonth() + 1; // 1월=0,12월=11이므로 1 더함
if (("" + month).length == 1) { month = "0" + month; }
return month;
*/
return getCurrentTime().substr(4,2);
}
/**
* 현재 日을 DD형식으로 리턴
*/
function getDay() {
/*
var now = new Date();
var day = now.getDate();
if (("" + day).length == 1) { day = "0" + day; }
return day;
*/
return getCurrentTime().substr(6,2);
}
/**
* 현재 時를 HH형식으로 리턴
*/
function getHour() {
/*
var now = new Date();
var hour = now.getHours();
if (("" + hour).length == 1) { hour = "0" + hour; }
return hour;
*/
return getCurrentTime().substr(8,2);
}
/**
* 오늘이 무슨 요일이야?
* ex) alert('오늘은 ' + getDayOfWeek() + '요일입니다.');
* 특정 날짜의 요일을 구하려면? => 여러분이 직접 만들어 보세요.
*/
function getDayOfWeek() {
var now = new Date();
var day = now.getDay(); //일요일=0,월요일=1,...,토요일=6
var week = new Array('일','월','화','수','목','금','토');
return week[day];
}
/* 날짜 입력시 "-" 자동으로 붙이기 */
function check_num() { // 숫자만 입력 가능하게
if ((event.keyCode >= 48 && event.keyCode <=111)
||(event.keyCode >= 187) || (event.keyCode == 32)) {
if(event.keyCode >= 96) event.keyCode = parseInt(event.keyCode - 48);
if(isNaN(String.fromCharCode(event.keyCode))) {
event.returnValue = false;
}
}
}
function fromDate(){ // 시작 년-월-일
mainf = document.main;
var fdate = mainf.fromdate.value;
if(event.keyCode != 46 && event.keyCode != 8){
check_num();
if(fdate.length == 4 || fdate.length == 7){
if(mainf.fromdate.value.length == 4){
mainf.fromdate.value = fdate + "-";
}else if(mainf.fromdate.value.length == 7){
mainf.fromdate.value = fdate + "-";
}
return;
}
if(fdate.length == 10){
mainf.todate.focus();
return;
}
return;
}
}
function toDate(){ // 종료 년-월-일
mainf = document.main;
var tdate = mainf.todate.value;
if(event.keyCode != 46 && event.keyCode != 8){
check_num();
if(tdate.length == 4 || tdate.length == 7){
if(mainf.todate.value.length == 4){
mainf.todate.value = tdate + "-";
}else if(mainf.todate.value.length == 7){
mainf.todate.value = tdate + "-";
}
return;
}
return;
}
}

function fmt_date(input) {
if ((event.keyCode >= 48 && event.keyCode <=111)
||(event.keyCode >= 187) || (event.keyCode == 32)) {
if(event.keyCode >= 96) event.keyCode = parseInt(event.keyCode - 48);
if(!isNaN(String.fromCharCode(event.keyCode)) && input.value.length <10) {
input.value += String.fromCharCode(event.keyCode);
if (input.value.length == 4 || input.value.length == 7) {
input.value += "-";
}
}
event.returnValue = false;
}
}
function fmt_time(input) {
if ((event.keyCode >= 48 && event.keyCode <=111)
||(event.keyCode >= 187) || (event.keyCode == 32)) {
if(event.keyCode >= 96) event.keyCode = parseInt(event.keyCode - 48);
if(!isNaN(String.fromCharCode(event.keyCode)) && input.value.length <5) {
input.value += String.fromCharCode(event.keyCode);
if (input.value.length == 2) {
input.value += ":";
}
}
event.returnValue = false;
}
}

function isEmpty_date(Which) {
YearObject = eval("document.main." + Which + "1");
MonthObject = eval("document.main." + Which + "2");
DaysObject = eval("document.main." + Which + "3");
if (isEmpty(YearObject)
&& isEmpty(MonthObject)
&& isEmpty(DaysObject)){
return true;
}
return false;
}
function pad_datevalue(Which) {
YearObject = eval("document.main." + Which + "1");
MonthObject = eval("document.main." + Which + "2");
DaysObject = eval("document.main." + Which + "3");
var dateString = '';
if (YearObject.value.length == 4) {
dateString = YearObject.value + MonthObject.value + DaysObject.value;
} else {
dateString = '0001';
}
return dateString;
}
/*************************************************************************
함수명 : chkFromToDay
기 능 : 기간을 체크
인 수 : frYyyy - 시작기간의 년
frMmm - 시작기간의 월
frDdd - 시작기간의 일
toYyyy - 끝기간의 년
toMm - 끝기간의 월
toDd - 끝기간의 일
chkNull - null check여부 "Y"=null체크함, "N"=null체크안함.
frName, toName - alert메세지를 뿌려줄것인지 구분 메세지를 넣어주면
해당메세지와 함께 alert창이 뜨고
- 메세지를 넣어주지않으면 alert창이 뜨지 않는다.
리턴값 : 시작기간과 끝기간이 빈값이 경우 true 반환
시작기간과 끝기간이 들어가고 (시작기간 <= 끝기간) 이 경우 true 반환
그외의 경우 false 반환
**************************************************************************/
function chkFromToDay(frYyyy,frMm,frDd,toYyyy,toMm,toDd,chkNull,frName, toName) {
if (eval(frYyyy+frMm+frDd)==0 && eval(toYyyy+toMm+toDd)==0) {
return true;
} else {
var date1 = chkYyyyMmDd(frYyyy, frMm, frDd, chkNull, frName);
var date2 = chkYyyyMmDd(toYyyy, toMm, toDd, chkNull, toName);
var gap = eval(date2) - eval(date1); // 받아온 날짜값을 숫자로 바꾼후 계산한다
// 종료일자에서 시작일자를 뺀값이 0보다 적다면(시작일자가 크다면)
if(gap < 0 ) {
return false;
}
return true;
}
}
/*************************************************************************
함수명 : chkDay
기 능 : 일 체크 function
인 수 : vDay - 체크하고자 하는 일
chkNull - null check여부 "Y"=null체크함, "N"=null체크안함.
fName - alert메세지를 뿌려줄것인지 구분 메세지를 넣어주면 해당메세지와 함께 alert창이 뜨고
- 메세지를 넣어주지않으면 alert창이 뜨지 않는다.
리턴값 :
**************************************************************************/
function chkDay(vDay, chkNull, fName) {
if( trim(vDay) == "" ) {
if( chkNull == "N" || chkNull == "n" ) {
return true;
}
if("" == fName){}
else {
alert(fName + "(을)를 반드시 입력 또는 선택하여야 합니다.");
}
return false;
}
if(isNaN(vDay) || vDay > 31 || vDay == 0) {
if("" == fName){}
else {
alert(fName+" 필드는 1-31값만 허용합니다.");
}
return false;
}
if(vDay.length == 1) return "0"+vDay;
return vDay;
}
/*************************************************************************
함수명 : chkMonth
기 능 : 월 체크 function
인 수 : vMonth - 체크하고자 하는 월
chkNull - null check여부 "Y"=null체크함, "N"=null체크안함.
fName - alert메세지를 뿌려줄것인지 구분 메세지를 넣어주면 해당메세지와 함께 alert창이 뜨고
- 메세지를 넣어주지않으면 alert창이 뜨지 않는다.
리턴값 :
**************************************************************************/
function chkMonth(vMonth, chkNull, fName) {
if( trim(vMonth) == "" ) {
if( chkNull == "N" || chkNull == "n" ) {
return true;
}
if("" == fName){}
else {
alert(fName + "(을)를 반드시 입력 또는 선택하여야 합니다.");
}
return false;
}
if(isNaN(vMonth) || vMonth > 12 || vMonth == 0) {
if("" == fName){}
else {
alert(fName+" 필드는 1-12값만 허용합니다.");
}
return false;
}
if(vMonth.length == 1) return "0"+vMonth;
return vMonth;
}
/*************************************************************************
함수명 : chkYear
기 능 : 년 체크 function
인 수 : vYear - 체크하고자 하는 년도
chkNull - null check여부 "Y"=null체크함, "N"=null체크안함.
fName - alert메세지를 뿌려줄것인지 구분 메세지를 넣어주면 해당메세지와 함께 alert창이 뜨고
- 메세지를 넣어주지않으면 alert창이 뜨지 않는다.
리턴값 :
**************************************************************************/
function chkYear(vYear, chkNull, fName) {
var yearTemp = Number(vYear);
var errorMesg = fName + "값을 숫자로 입력해 주십시요!";
var isYearMsg = "년도를 4 자리로 입력하시기 바랍니다";
var yearCheckMsg = "년도를 확인하시기 바랍니다";
if( trim(vYear) == "" ) {
if( chkNull == "N" || chkNull == "n" ) {
return true;
}
if("" == fName){}
else {
alert(fName + "(을)를 반드시 입력 또는 선택하여야 합니다.");
}
return false;
}
if(isNaN(yearTemp)) {
if("" == fName){}
else {
alert(errorMesg);
}
return false;
} else if(vYear.length != 4) {
if("" == fName){}
else {
alert(isYearMsg);
}
return false;
} else {
if (yearTemp < 1900) {
alert(yearCheckMsg);
return false;
} else {
return vYear;
}
}
}
/*************************************************************************
함수명 : chkYyyyMmDd
기 능 : 년월일을 체크하는 Function
인 수 : vYear - 체크하고자 하는 년도
vMonth - 체크하고자 하는 월
vDay - 체크하고자 하는 일
chkNull - null check여부 "Y"=null체크함, "N"=null체크안함.
fName - alert메세지를 뿌려줄것인지 구분 메세지를 넣어주면 해당메세지와 함께 alert창이 뜨고
- 메세지를 넣어주지않으면 alert창이 뜨지 않는다.
리턴값 :
**************************************************************************/
function chkYyyyMmDd(vYear, vMonth, vDay, chkNull, fName) {
var date = "";
var errorMesg1 = fName + "의 년도에 정확한 값을 넣어주십시오!예) 2001";
var errorMesg2 = fName + "의 월에 정확한 값을 넣어주십시오!예) 2001/01/31";
var errorMesg3 = fName + "의 일자에 정확한 값을 넣어주십시오!예) 2001/01/31";

//년도의 4자리수 체크
if( vYear.length != 4 ) {
if("" == fName){}
else {
alert(errorMesg1);
}
return false;
}
//월이 두자리가 아닐경우 앞에 "0"을 붙여서 두자리로 만듬"
if(vMonth < 10 && vMonth.indexOf(0) == -1 ) {
vMonth = "0" + vMonth;
}
//일이 두자리가 아닐경우 앞에 "0"을 붙여서 두자리로 만듬"
if(vDay < 10 && vDay.indexOf(0) == -1 ) {
vDay = "0" + vDay;
}
date = vYear + vMonth + vDay;
if( date.length != 8 || date.length == 0 ) {
if( chkNull == "N" || chkNull == "n" ) {
return true;
}
if("" == fName){}
else {
alert(fName + "(을)를 반드시 입력 또는 선택하여야 합니다.");
}
return false;
}
//날짜가 숫자인지 체크
if( !chkNumber(date, fName)) {
return false;
}
// 월이 12 보다 큰 수가 있는지 체크
if(vMonth > 12 || vMonth == 0) {
if("" == fName){}
else {
alert(errorMesg2);
}
return false;
}
// 일 체크
if(vMonth == 01 || vMonth == 03 || vMonth == 05 || vMonth == 07 || vMonth == 08 || vMonth == 10 || vMonth == 12) {
if(vDay > 31 || vDay == 0) {
if("" == fName){}
else {
alert(errorMesg3);
}
return false
}
} else if(vMonth == 02) { //윤년 조사
if(((vYear % 4 == 0) && (vYear % 100 != 0)) || (vYear % 400 == 0)) {
if(vDay > 29 || vDay == 0) {
if("" == fName){}
else {
alert(errorMesg3);
}
return false;
}
} else {
if(vDay > 28 || vDay == 0) {
if("" == fName){}
else {
alert(errorMesg3);
}
return false
}
}
} else if(vMonth == 04 || vMonth == 06 || vMonth == 09 || vMonth == 11) {
if(vDay > 30 || vDay == 0) {
if("" == fName){}
else {
alert(errorMesg3);
}
return false
}
}
return true;
}

/*************************************************************************
함수명 : cntDayYyyyMmDd
기 능 : 기간 사이의 일수 Count
인 수 : frYyyyMmDd - 시작 년월일
toYyyyMmDd - 종료 년월일
frDdHh24Ss - 시작 시간
toDdHh24Ss - 종료 시간
리턴값 :
**************************************************************************/
function cntDay ( frYyyyMmDd, toYyyyMmDd, frDdHh24Ss, toDdHh24Ss ) {
var frDdHh24SsTmp = ( frDdHh24Ss == null || frDdHh24Ss == "" || isNaN ( frDdHh24Ss ) ) ? "000000" : frDdHh24Ss;
var toDdHh24SsTmp = ( toDdHh24Ss == null || toDdHh24Ss == "" || isNaN ( toDdHh24Ss ) ) ? "000000" : toDdHh24Ss;
var frDt = new Date( frYyyyMmDd.substring(0, 4), frYyyyMmDd.substring(4, 6) - 1,
frYyyyMmDd.substring(6, 8), frDdHh24SsTmp.substring(0, 2),
frDdHh24SsTmp.substring(2, 4), frDdHh24SsTmp.substring(4, 6));
var toDt = new Date( toYyyyMmDd.substring(0, 4), toYyyyMmDd.substring(4, 6) - 1,
toYyyyMmDd.substring(6, 8), toDdHh24SsTmp.substring(0, 2),
toDdHh24SsTmp.substring(2, 4), toDdHh24SsTmp.substring(4, 6));
var tmp = toDt.getTime() - frDt.getTime();
var dayCnt = ( tmp / 24 / 60 / 60 / 1000 );
dayCnt = dayCnt + 1;
return dayCnt;
}
/*************************************************************************
함수명 : addDays
기 능 : srcDate에서 days 후의 년월일을 반환
인 수 : srcDate - 기준 년월일
days - 경과일수
리턴값 :
**************************************************************************/
function addDays(srcDate, days) {
//var srcDate = srcDate.getTime();
var srcDate = new Date(srcDate);
var srcTime = srcDate.getTime();
var destDateTmp1 = new Date( srcTime + (days * 86400000));
var destDateYear = destDateTmp1.getFullYear();
var destDateMonth = destDateTmp1.getMonth() + 1;
var destDateDay = destDateTmp1.getDate();
var destDateTmp2 = "" + destDateYear;
if (destDateMonth < 10) {
destDateTmp2 = destDateTmp2 + "0" + destDateMonth;
} else {
destDateTmp2 = destDateTmp2 + destDateMonth;
}
destDateTmp2 = destDateTmp2 + destDateDay;
var destDate = formatDate(destDateTmp2, "/");
return destDate;
}
/*************************************************************************
함수명 : formatDate
기 능 : YYYYMMDD -> YYYY/MM/DD로 변경
인 수 : sdate - 년월일(YYYYMMDD)
vformat - format String
리턴값 :
**************************************************************************/
function formatDate(sdate, vFormat) {
var fmtDate = "";
if(sdate.length == 8) {
fmtDate = sdate.substring(0, 4) + vFormat + sdate.substring(4, 6)
+ vFormat + sdate.substring(6, 8);
} else if (sdate.length == 6) {
fmtDate = sdate.substring(0, 4) + vFormat + sdate.substring(4, 6);
}
return fmtDate;
}
/*************************************************************************
함수명 : lastDay
기 능 : 해당 년월의 마지막 날짜 구하는 함수
인 수 : calYear - 해당 년도
calMonth - 해당 월
리턴값 :
**************************************************************************/
function lastDay(calYear,calMonth) {
if (((calYear %4 == 0) && (calYear % 100 != 0))||(calYear % 400 == 0))
endDayOfMonth[1] = 29;
var nDays = endDayOfMonth[calMonth-1];
return nDays;
}
[출처] 일자관련함수|작성자 송욱이네

+ Recent posts