Introduction
Visual Basic's Format
function for formatting dates is missing from VBScript.
Without Format
, it can be difficult to yield custom formatted dates.
Using the FormatDate
function described below, your worries are over!
Using the Code
First find the format string
's length.
Next, loop through every character in the format string
.
Begin building a format block.
Handle the format block when the character changes (meaning either a new format block is starting, or we need to persist a separator character).
The various supported format blocks are translated through the SELECT CASE
statement and the output string
(formatted date) is appended. The CASE ELSE
statement at the end will append separator characters or anything not understood as a format block string
.
Keep looping until we are one past the end, and the final block or character will be handled.
Function FormatDate(strDate, strDateFmt)
dim strRet
dim i
dim formatBlock
dim formatLength
dim charLast
dim charCur
formatLength = len(strDateFmt)
for i = 1 to formatLength + 1
charCur = mid(strDateFmt, i, 1)
if charCur = charLast then
formatBlock = formatBlock & charCur
else
select case formatBlock
case "mmmm"
strRet = strRet & MonthName(DatePart("m",strDate),False)
case "mmm"
strRet = strRet & MonthName(DatePart("m",strDate),True)
case "mm"
strRet = strRet & right("0" & DatePart("m",strDate),2)
case "m"
strRet = strRet & DatePart("m",strDate)
case "dddd"
strRet = strRet & WeekDayName(DatePart("w",strDate,1),False)
case "ddd"
strRet = strRet & WeekDayName(DatePart("w",strDate,1),True)
case "dd"
strRet = strRet & right("0" & DatePart("d",strDate),2)
case "d"
strRet = strRet & DatePart("d",strDate)
case "o"
strRet = strRet & intToOrdinal(DatePart("d",strDate))
case "yyyy"
strRet = strRet & DatePart("yyyy",strDate)
case "yy"
strRet = strRet & right(DatePart("yyyy",strDate),2)
case "y"
strRet = strRet & cInt(right(DatePart("yyyy",strDate),2))
case else
strRet = strRet & formatBlock
end select
formatBlock = charCur
end if
charLast = charCur
next
FormatDate = strRet
End Function
History
- 5/5/2008 v1.0
- 2/13/2009 v2.0