[Classic ASP] 날짜,시간 처리 함수들
Wdev
2014-05-01

그 동안 만들어 사용하던 날짜,시간 관련 함수들을 모아 봤다.

ASP에선 날짜/시간을 출력하는 경우 시스템의 날짜형식으로 출력이 된다.
적합한 모양으로 바꾸어 출력 되도록 하는것들이 대부분 함수들이다.

모아보니 함수들이 많은것 같은데 필요할 때마다 추가한것이라 한번씩은 용도가 있었던것이라 참고 하시거나 사용안할듯 한것들은 제거 하여 재구성하여 사용 하길 추천 한다.

GetFullDateTimeH(), GetFullDateH() : 구분자를 "-"로 출력 한다.
 ** in-line query 로 DB에 저장하는 경우 이 형식으로 날짜를 표현해야 한다.

GetFullDateTimeON() : 날짜/시간의 숫자 값만 출력한다.
 ** 임시파일의 파일명 생성시 4~6자리의 랜덤 값과 사용하면 중복을 쉽게 피할 수 있다.

GetMonthLastDate()
: 해당월의 마지막일자를 구한다.
 ** 기간 설정 시 유용 하다.

CDateWithCheck() : 변수가 유효한 날짜로 변경이 가능한 경우에만 변경된다.
 ** 날짜 형식은 javascript에서 유효성을 확인 하지만 실제 데이타 처리시에도 반드시 확인 하길 추천 한다.

Date연산 함수들 : 자주 사용되는 연산 규칙들을 함수로 구성 했다.

UNIX Time : 초단위로 출력되는 숫자로 경과시간을 초단위로 나타낼 때 유효하다
 ** 경과 시간 구하기
   iPastSecond = DateTime2UnixTime( dEnd ) - DateTime2UnixTime( dStart )

'============================================
' DateTime functions
'============================================
function GetFullDateTime( dNow )
	GetFullDateTime = Year(dNow)&"."&FillZero(Month(dNow),2)&"."&FillZero(Day(dNow),2) &" "& FillZero(Hour(dNow),2)&":"&FillZero(Minute(dNow),2)&":"&FillZero(Second(dNow),2)
	end Function
function GetFullDateTimeT( dNow )
	GetFullDateTimeT = Year(dNow)&"-"&FillZero(Month(dNow),2)&"-"&FillZero(Day(dNow),2) &"T"& FillZero(Hour(dNow),2)&":"&FillZero(Minute(dNow),2)&":"&FillZero(Second(dNow),2)
	end Function
function GetFullDateTimeH( dNow )
	GetFullDateTimeH = Year(dNow)&"-"&FillZero(Month(dNow),2)&"-"&FillZero(Day(dNow),2) &" "& FillZero(Hour(dNow),2)&":"&FillZero(Minute(dNow),2)&":"&FillZero(Second(dNow),2)
	end Function
function GetFullDateTimeKor( dNow )
	GetFullDateTimeKor = Year(dNow)&"년 "&Month(dNow)&"월 "&Day(dNow)&"일 ("& WeekDayName(Weekday(dNow), True)&") "& FillZero(Hour(dNow),2)&":"&FillZero(Minute(dNow),2)&":"&FillZero(Second(dNow),2)
	end Function
	
function GetFullDate( dNow )
	GetFullDate = Year(dNow)&"."&FillZero(Month(dNow),2)&"."&FillZero(Day(dNow),2)
	end Function
function GetFullDateH( dNow )
	GetFullDateH = Year(dNow)&"-"&FillZero(Month(dNow),2)&"-"&FillZero(Day(dNow),2)
	end Function
function GetFullDateKor( dNow )
	GetFullDateKor = Year(dNow)&"년 "&Month(dNow)&"월 "&Day(dNow)&"일"
	end Function

'===== only numeric
function GetFullDateTimeON( dNow )
	GetFullDateTimeON = Year(dNow) & FillZero(Month(dNow),2) & FillZero(Day(dNow),2) & FillZero(Hour(dNow),2) & FillZero(Minute(dNow),2) & FillZero(Second(dNow),2)
	end Function
function GetFullDateTimeONHM( dNow )
	GetFullDateTimeONHM = Year(dNow) & FillZero(Month(dNow),2) & FillZero(Day(dNow),2) & FillZero(Hour(dNow),2) & FillZero(Minute(dNow),2)
	end Function
function GetTime( dNow )
	GetTime = FillZero(Hour(dNow),2) &":"& FillZero(Minute(dNow),2) &":"& FillZero(Second(dNow),2)
	end function
function GetTimeON( dNow )
	GetTimeON = FillZero(Hour(dNow),2) & FillZero(Minute(dNow),2) & FillZero(Second(dNow),2)
	end function
	
function GetFullDateON( dNow )
	GetFullDateON = Year(dNow) & FillZero(Month(dNow),2) & FillZero(Day(dNow),2)
	end Function
function GetFullDateON6( dNow )
	GetFullDateON6 = Right(Year(dNow),2) & FillZero(Month(dNow),2) & FillZero(Day(dNow),2)
	end Function

function ONDateTime2DateTime( cDateTime14 )
	ONDateTime2DateTime = ONDate2DateTime(Mid(cDateTime14,1,8))&" "&ONTime2DateTime(Mid(cDateTime14,9,6))
	end function

function ONDate2DateTime( cDate8 )
	dim cReturn
	if (cDate8="") or ISNull(cDate8) then
		cReturn = ""
	else
		cReturn = Mid(cDate8,1,4) &"-"& Mid(cDate8,5,2) &"-"& Mid(cDate8,7,2)
	end if
	ONDate2DateTime = cReturn
end function

function ONTime2DateTime( cTime6 )
	dim cReturn
	if (cTime6="") or ISNull(cTime6) then
		cReturn = ""
	else
		cReturn = Mid(cTime6,1,2) &":"& Mid(cTime6,3,2) &":"& Mid(cTime6,5,2)
	end if
	ONTime2DateTime = cReturn
end function

function GetYearMonth( dNow )
	GetYearMonth = FillZero(Year(dNow),4)&"/"& FillZero(Month(dNow),2)
end Function

function GetMonthDay( dNow )
	GetMonthDay = FillZero(Month(dNow),2)&"/"& FillZero(Day(dNow),2)
end Function

function GetHourMinute( dNow )
	if IsNull(dNow) then
		GetHourMinute = ""
	else
		GetHourMinute = FillZero(Hour(dNow),2)&":"& FillZero(Minute(dNow),2)
	end if
end Function

function GetHourMinuteSecond( dNow )
	if IsNull(dNow) then
		GetHourMinuteSecond = ""
	else
		GetHourMinuteSecond = FillZero(Hour(dNow),2)&":"& FillZero(Minute(dNow),2)&":"& FillZero(Second(dNow),2)
	end if
end function


function CDateWithCheck( cDate8 )
	dim cDate10
	cDate10 = ONDate2DateTime(cDate8)
	if IsDate( cDate10 ) then
		CDateWithCheck = CDate( cDate10 )
	else
		CDateWithCheck = null
	end if
end function

function CDateWithCheck10( cDate10 )
	if IsDate( cDate10 ) then
		CDateWithCheck10 = CDate( cDate10 )
	else
		CDateWithCheck10 = null
	end if
end function

function CheckDateTime( cDate8 )
	CheckDateTime = IsDate( ONDate2DateTime(cDate8) )
end function

function CheckDateTimeNull( cDate8 )
	CheckDateTimeNull = (IsDate( ONDate2DateTime(cDate8) ) or IsNull(cDate8))
end function

function GetMonthLastDate( iYear, iMonth )
	dim cNextMonthFistDate
	
	if (iMonth=12) then
		cNextMonthFistDate=FillZero((iYear+1),4)&"0101"
	else
		cNextMonthFistDate=FillZero(iYear,4)&FillZero((iMonth+1),2)&"01"
	end if
	GetMonthLastDate = GetFullDateON(CDateWithCheck(cNextMonthFistDate)-1)&" 23:59:59"
end function

function GetMonthLastDay( iYear, iMonth )
	dim cNextMonthFistDate
	
	if (iMonth=12) then
		cNextMonthFistDate=FillZero((iYear+1),4)&"-01-01"
	else
		cNextMonthFistDate=FillZero(iYear,4)&"-"&FillZero((iMonth+1),2)&"-01"
	end if
	
	GetMonthLastDay = Day(CDate(cNextMonthFistDate)-1)
end function

function CmpStartEndMonth( iStartYear, iStartMonth, iEndYear, iEndMonth )
	dim iCmpStartDate, iCmpEndDate
	iCmpStartDate = CintZero(FillZero(iStartYear,4)&FillZero(iStartMonth,2))
	iCmpEndDate  = CIntZero(FillZero(iEndYear,4)&FillZero(iEndMonth,2))
	
	CmpStartEndMonth = CBool(iCmpStartDate > iCmpEndDate)
end function

'== Date add functions
function YearMonthAddMonthGetYear( iYear, iMonth, iAddMonth )
	YearMonthAddMonthGetYear = Year(YearMonthAddMonth( iYear, iMonth, iAddMonth ))
	end function
function YearMonthAddMonthGetMonth( iYear, iMonth, iAddMonth )
	YearMonthAddMonthGetMonth = Month(YearMonthAddMonth( iYear, iMonth, iAddMonth ))
	end function
function YearMonthAddMonth( iYear, iMonth, iAddMonth )
	YearMonthAddMonth = DateAdd( "m", iAddMonth, CDate(FillZero(iYear,4)&"-"&FillZero(iMonth,2)&"-01") )
	end function
function AddMonthGetMonth( dDate, iMonth )
	AddMonthGetMonth = Month(AddMonth( dDate, iMonth ))
	end function
function AddMonthGetYear( dDate, iMonth )
	AddMonthGetYear = Year(AddMonth( dDate, iMonth ))
	end function
function AddMonth( dDate, iMonth )
	AddMonth = DateAdd( "m", iMonth, dDate )
	end function
	
'== UNIX Time
function DateTime2UnixTime( dDateTime )
	DateTime2UnixTime = DateDiff( "s", "01/01/1970 00:00:00", dDateTime )
end function

function UnixTime2DateTime( iUnixTime )
	UnixTime2DateTime = DateAdd( "s", iUnixTime, "01/01/1970 00:00:00" )
end function

function MonthNameEng( iMonth )
	dim cReturn
	
	select case iMonth
	case 1 cReturn = "January"
	case 2 cReturn = "February"
	case 3 cReturn = "March"
	case 4 cReturn = "April"
	case 5 cReturn = "May"
	case 6 cReturn = "June"
	case 7 cReturn = "July"
	case 8 cReturn = "August"
	case 9 cReturn = "September"
	case 10 cReturn = "October"
	case 11 cReturn = "November"
	case 12 cReturn = "December"
	end select
	
	MonthNameEng = cReturn
end function

저작권자 © WDEV, 무단전재 및 재배포 금지
ASP/PHP 분류 내의 이전기사