/****************************************************************************************** * 기능 : 해당 Locale의 오늘 날짜를 가져온다. * 인자 : * 리턴 : string * 예문 : *****************************************************************************************/
function gfn_Today()
{
var objDate = new Date();
var ngetTime = objDate.getTime();
objDate.setTime(ngetTime); // objDate는 해당 Locale로 변경됨
var strToday = objDate.getFullYear() + "";
strToday += gfn_Right("0" + (objDate.getMonth() + 1), 2);
strToday += gfn_Right("0" + objDate.getDate(), 2);
return strToday;
}
/******************************************************************************* ★ 설명 해당 PC의 오늘 날짜를 가져온다. ★ parameter ★ return - 성공 = yyyyMMdd형태의 오늘 날짜 ( 예 : "20121122" ) - 실패 = 없음 ******************************************************************************/
function fn_Today()
{
var sToday = "";
var objDate = new Date();
var sToday = objDate.getFullYear().toString();
sToday += Right("0" + (objDate.getMonth() + 1), 2);
sToday += Right("0" + objDate.getDate(), 2);
return sToday;
}
/****************************************************************************************** * 기능 : 입력된 날자에 OffSet 으로 지정된 만큼의 일을 더한다. * 인자 : psDate ('yyyyMMdd' 형태로 표현된 날자) * pnOffSet (날짜로부터 증가 감소값). 지정하지 않으면 Default Value = 1 로 적용됩니다) * 리턴 : Date에 nOffset이 더해진 결과를 'yyyyMMdd'로 표현된 날자. * 예문 : *****************************************************************************************/
function gfn_AddDate(psDate, pnOffSet){
if (gfn_IsNull(pnOffSet)) pnOffSet = 1;
var d = new Date(1);//윤달 때문에 꼭넣어야함
d.setYear(psDate.substr(0, 4));
d.setMonth(toNumber(psDate.substr(4, 2))-1);
d.setDate( toNumber(psDate.substr(6, 2)));
d.toFormatString("%Y%m%d", "ko_KR"); // 값셋팅
d.addDate(pnOffSet);
return d.toFormatString("%Y%m%d", "ko_KR");
}
/********************************************************************************** ★ 설명 입력된 날자에 nOffset 으로 지정된 만큼의 일을 증감한다. ★ parameter 1. sDate : 날짜 ( 예 : "20121122" ) 2. nOffset : 일 증감값 ( 예 : 10 또는 -10 ) ★ return - 성공 = yyyyMMdd형태의 증감된 날짜 ( 예 : "20121202" 또는 "20121112" ) - 실패 = "" **********************************************************************************/
function fn_AddDate(sDate, nOffset)
{
if( fn_IsNull(sDate) || fn_IsNull(nOffset) ) return "";
var nYear = parseInt(sDate.substr(0, 4));
var nMonth = parseInt(sDate.substr(4, 2));
var nDate = parseInt(sDate.substr(6, 2)) + nOffset;
return MakeDate(nYear, nMonth, nDate);
}
/****************************************************************************************** * 기능 : 2개의 날짜간의 Day count * 인자 : sFdate 시작일자 * sTdate 종료일자 * 리턴 : 양 일자간의 Day count * 예문 : gfn_GetDiffDay("20090808", "20091001") *****************************************************************************************/
function gfn_GetDiffDay(sFdate, sTdate)
{
sFdate = new String(sFdate);
sFdate = sFdate.replace(" ", "").replace("-", "").replace("/", "");
sTdate = new String(sTdate);
sTdate = sTdate.replace(" ", "").replace("-", "").replace("/", "");
sFdate = gfn_Left(sFdate, 8);
sTdate = gfn_Left(sTdate, 8);
if (sFdate.length != 8 || sTdate.length != 8
|| isNumeric(sFdate) == false || isNumeric(sTdate) == false
|| gfn_GetDay(sFdate) == -1 || gfn_GetDay(sTdate) == -1) {
return null;
}
var nDiffDate = gfn_StrToDate(sTdate) - gfn_StrToDate(sFdate);
var nDay = 1000*60*60*24;
nDiffDate = parseInt(nDiffDate/nDay);
if (nDiffDate < 0) {
nDiffDate = nDiffDate - 1;
} else {
nDiffDate = nDiffDate + 1;
}
return nDiffDate;
}
/******************************************************************************* ★ 설명 2개의 날짜간의 일수 계산 ★ parameter 1. sStartDate : yyyyMMdd형태의 From 일자 ( 예 : "20121122" ) 2. sEndDate : yyyyMMdd형태의 To 일자 ( 예 : "20121202" ) ★ return - 성공 = 숫자 형태의 차이일수 ( 예 : 10 ) 단, sEndDate < sStartDate이면 음수가 return된다. - 실패 = NaN ******************************************************************************/
function fn_DiffDate(sStartDate, sEndDate)
{
if( fn_IsNull(sStartDate) || fn_IsNull(sEndDate) ) return NaN;
var vFromDate = new Date(parseInt(sEndDate.substring(0,4), 10), parseInt(sEndDate.substring(4,6)-1, 10), parseInt(sEndDate.substring(6,8), 10));
var vToDate = new Date(parseInt(sStartDate.substring(0,4), 10), parseInt(sStartDate.substring(4,6)-1, 10), parseInt(sStartDate.substring(6,8), 10));
return parseInt((vFromDate - vToDate)/(1000*60*60*24));
}
/****************************************************************************************** * 기능 : 문자를 날짜로 변환하는 함수. * 인자 : sDate 8자리 형식으로된 날짜. yyyyMMdd의 형식으로 입력됩니다. * 리턴 : Date * 예문 : *****************************************************************************************/
function gfn_StrToDate(sDate)
{
var nYear = parseInt(sDate.substr(0, 4));
var nMonth = parseInt(sDate.substr(4, 2)) - 1;
var nDate = parseInt(sDate.substr(6, 2));
return new Date(nYear, nMonth, nDate);
}
/****************************************************************************************** * 기능 : 날짜를 문자로 변환하는 함수. * 인자 : sDate 8자리 형식으로된 날짜. yyyyMMdd의 형식으로 입력됩니다. * 리턴 : 해당날짜를 리턴. * 예문 : *****************************************************************************************/
function gfn_DateToStr(sDate)
{
return (new Date(sDate)).getFullYear()
+ (((new Date(sDate)).getMonth() + 1) + "").padLeft(2, '0')
+ (((new Date(sDate)).getDate()) + "").padLeft(2, '0');
}
/****************************************************************************************** * 기능 : 입력된 날짜에 mask 적용하여 구함 * 인자 : psDate : yyyyMMdd 또는 yyyyMMddhhmmss 형태의 날짜 ( 예 : "20121122" ) * 리턴 : mask 적용한 값 ( 예 : 2012/11/22 ) * 예문 : *****************************************************************************************/
function gfn_GetMaskDate(psDate)
{
var vsDate;
if ( psDate.length == 8 ) {
vsDate = gv_DateFormat;
vsDate = vsDate.replace("yyyy",psDate.substr(0,4));
vsDate = vsDate.replace("MM",psDate.substr(4,2));
vsDate = vsDate.replace("dd",psDate.substr(6,2));
}
else if ( psDate.length == 14 ) {
vsDate = gv_DateFormat + " hh:mm:ss";
vsDate = vsDate.replace("yyyy",psDate.substr(0,4));
vsDate = vsDate.replace("MM",psDate.substr(4,2));
vsDate = vsDate.replace("dd",psDate.substr(6,2));
vsDate = vsDate.replace("hh",psDate.substr(8,2));
vsDate = vsDate.replace("mm",psDate.substr(10,2));
vsDate = vsDate.replace("ss",psDate.substr(12,2));
}
else {
vsDate = psDate.toString();
}
return vsDate;
}
/****************************************************************************************** * 기능 : 입력된 날자로부터 요일을 구함 * 인자 : sDate 8자리 형식으로된 날짜. yyyyMMdd의 형식으로 입력됩니다. * 리턴 : 요일에 따른 숫자. * 0 = 일요일 ~ 6 = 토요일 로 대응됩니다. * 오류가 발생할 경우 -1이 Return됩니다. * 예문 : *****************************************************************************************/
function gfn_GetDay(sDate)
{
var objDate = gfn_StrToDate(sDate);
return objDate.getDay();
}
/****************************************************************************************** * 기능 : 입력된 날자로부터 요일명을 구함 * 인자 : sDate 8자리 형식으로된 날짜. yyyyMMdd의 형식으로 입력됩니다. * 리턴 : 요일명 * 예문 : *****************************************************************************************/ function gfn_GetDayName(sDate)
{
var objDayName = new Array("일요일", "월요일", "화요일","수요일","목요일", "금요일","토요일");
var objDate = gfn_GetDay(sDate);
return objDayName[objDate];
}
/****************************************************************************************** * 기능 : 해당월의 마지막 날짜를 숫자로 구하기 * 인자 : sDate : yyyyMMdd형태의 날짜 ( 예 : "20121122" ) * 리턴 : 성공 = 마지막 날짜 숫자값 ( 예 : 30 ) * 실패 = -1 * 예문 : *****************************************************************************************/
function gfn_LastDateNum(sDate)
{
var nMonth, nLastDate;
if( gfn_IsNull(sDate) ) return -1;
nMonth = parseInt(sDate.substr(4,2), 10);
if( nMonth == 1 || nMonth == 3 || nMonth == 5 || nMonth == 7 || nMonth == 8 || nMonth == 10 || nMonth == 12 )
nLastDate = 31;
else if( nMonth == 2 )
{
if( gfn_IsLeapYear(sDate) == true )
nLastDate = 29;
else
nLastDate = 28;
}
else
nLastDate = 30;
return nLastDate;
}
/****************************************************************************************** * 기능 : 해당월의 마지막 날짜를 yyyyMMdd형태로 구하기 * 인자 : sDate : yyyyMMdd형태의 날짜 ( 예 : "20121122" ) * 리턴 : 성공 = yyyyMMdd형태의 마지막 날짜 ( 예 : "20121130" ) * 실패 = "" * 예문 : *****************************************************************************************/
function gfn_LastDate(sDate)
{
if( gfn_IsNull(sDate) ) return "";
var nLastDate = gfn_LastDateNum(sDate);
return sDate.substr(0,6) + nLastDate.toString();
}
/****************************************************************************************** * 기능 : 한달후 날짜 구하는 함수. * 인자 : strDate : yyyyMMdd형태의 날짜 ( 예 : "20121122" ) * 리턴 : 성공 = yyyyMMdd형태의 해당날짜를 리턴. ( 예 : "20121130" ) 실패 = "" * 예문 : *****************************************************************************************/
function gfn_GetOneMonthAfter(strDate)
{
if (strDate)
{
var date = str2Date(strDate);
var d = (new Date(date)).addMonth(1);
} else
{
var d = (new Date).addMonth(1);
}
var s = (new Date(d)).getFullYear()
+ (((new Date(d)).getMonth() + 1) + "").padLeft(2, '0')
+ (((new Date(d)).getDate()) + "").padLeft(2, '0');
return (s);
}
/****************************************************************************************** * 기능 : Diff만큼 후 날짜 구하는 함수. * 인자 : strDate : yyyyMMdd형태의 날짜 ( 예 : "20121122" ) diff : 날짜로부터 증가 감소값 offset * 리턴 : 성공 = yyyyMMdd형태의 해당날짜를 리턴. ( 예 : "20121130" ) * 실패 = "" * 예문 : *****************************************************************************************/
function gfn_GetDateDiff(strDate, diff)
{
if (strDate)
{
var date = str2Date(strDate);
var d = (new Date(date)).addDate(diff);
} else
{
var d = (new Date).addDate(diff);
}
var s = (new Date(d)).getFullYear()
+ (((new Date(d)).getMonth() + 1) + "").padLeft(2, '0')
+ (((new Date(d)).getDate()) + "").padLeft(2, '0');
return (s);
}
|