TimeToString




Function TimeToString(ByVal aDate As Date, Optional ShortTimeFormat As Boolean, _
Optional showHundredths As Boolean) As String

Dim y As Long, m As Long, d As Long
Dim ho As Long, mi As Long, se As Long, hu As Long
Dim res As String
Dim days As Double

days = CDbl(aDate)

' evaluate (approximate) year, month, and day

y = Int(days / 365.25)
m = (days - Int(y * 365.25)) \ 30
d = (days - Int(y * 365.25) - m * 30)

' make some adjustments

If d >= 30 Then
m = m + 1
d = d Mod 30
End If
If m >= 12 Then
y = y + 1
m = m Mod 12
End If

' evaluate hours, minutes, and seconds

' 8640000 = number of Hundredths of seconds in a day

hu = (days - Int(days)) * 8640000
ho = (hu \ 360000)
mi = (hu - ho * 360000) \ 6000
se = (hu - ho * 360000 - mi * 6000) \ 100
hu = hu Mod 1000

' build the result string

If y Then
res = CStr(y) & " year" & IIf(y <> 1, "s", "") & ", "
End If

If m Or Len(res) Then
res = res & CStr(m) & " month" & IIf(m <> 1, "s", "") & ", "
End If

If d Or Len(res) Then
res = res & CStr(d) & " day" & IIf(d <> 1, "s", "") & ", "
End If

If ho Or Len(res) Then
res = res & CStr(ho) & IIf(ShortTimeFormat, " h", " hour" & IIf(ho <> 1, _
"s", "")) & ", "
End If

If mi Or Len(res) Then
res = res & CStr(mi) & IIf(ShortTimeFormat, " m", _
" minute" & IIf(mi <> 1, "s", "")) & ", "
End If

' always display seconds

res = res & CStr(se) & IIf(ShortTimeFormat, " s", " second" & IIf(se <> 1, _
"s", ""))

TimeToString = res

End Function

convert a date value into a string in the format
YY years, MM months, DD days, HH hours, MM minutes, SS.HH seconds)
you can also opt for time short format (HH h, MM m, SS s)











( timetostring.html )- by Paolo Puglisi - Modifica del 17/12/2023