Article ID: 186425
Article Last Modified on 10/20/2000
Debug.Print #3:00:00# + #4:00:00#yields:
7:00:00AM
MASK SAMPLE DISPLAY (for 5 Days, 5hr, 15m, 45s) ------------ ------------------------------------------ D H 5 Days 5 Hours D H:MM 5 Days 5:15 D HH:MM 5 Days 05:15 D H:MM:SS 5 Days 5:15:45 D HH:MM:SS 5 Days 05:15:45 H M 125 Hours 15 Minutes H:MM 125:15 H:MM:SS 125:15:45 M S 7515 Minutes 45 SecondsYou can easily extend the function to support additional masks.
Function FormatInterval (ByVal Interval As Date, _
ByVal Fmt As String) As String
Dim Days As Long, Hours As Long, Minutes As Long, Seconds As Long
Seconds = CLng(Interval * 86400)
Minutes = Seconds \ 60
Seconds = Seconds Mod 60
Hours = Minutes \ 60
Minutes = Minutes Mod 60
Days = Hours \ 24
Hours = Hours Mod 24
Select Case Fmt
Case "D H"
FormatInterval = Days & IIf(Days <> 1, " Days ", " Day ") & _
Hours & IIf(Hours <> 1, " Hours", " Hour")
Case "D H:MM"
FormatInterval = Days & IIf(Days <> 1, " Days ", " Day ") & _
Hours & ":" & Format$(Minutes, "00")
Case "D HH:MM"
FormatInterval = Days & IIf(Days <> 1, " Days ", " Day ") & _
Format$(Hours, "00") & ":" & _
Format$(Minutes, "00")
Case "D H:MM:SS"
FormatInterval = Days & IIf(Days <> 1, " Days ", " Day ") & _
Hours & ":" & Format$(Minutes, "00") & ":" & _
Format$(Seconds, "00")
Case "D HH:MM:SS"
FormatInterval = Days & IIf(Days <> 1, " Days ", " Day ") & _
Format$(Hours, "00") & ":" & _
Format$(Minutes, "00") & ":" & _
Format$(Seconds, "00")
Case "H M"
Hours = Hours + Days * 24
FormatInterval = Hours & _
IIf(Hours <> 1, " Hours ", " Hour ") & _
Minutes & _
IIf(Minutes <> 1, " Minutes", " Minute")
Case "H:MM"
Hours = Hours + Days * 24
FormatInterval = Hours & ":" & Format$(Minutes, "00")
Case "H:MM:SS"
Hours = Hours + Days * 24
FormatInterval = Hours & ":" & Format$(Minutes, "00") & ":" & _
Format$(Seconds, "00")
Case "M S"
Minutes = Minutes + (Hours + Days * 24) * 60
FormatInterval = Minutes & _
IIf(Minutes <> 1, " Minutes ", " Minute ") & _
Seconds & _
IIf(Seconds <> 1, " Seconds", " Second")
Case Else
FormatInterval = ""
End Select
End Function
?FormatInterval(5.14, "D H:MM:SS")
5 Days 3:21:36
Additional query words: kbVBA kbDSupport kbdse kbNoKeyWord
Keywords: kbinfo KB186425