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) y = Int(days / 365.25) m = (days - Int(y * 365.25)) \ 30 d = (days - Int(y * 365.25) - m * 30) 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 hu = (days - Int(days)) * 8640000 ho = (hu \ 360000) mi = (hu - ho * 360000) \ 6000 se = (hu - ho * 360000 - mi * 6000) \ 100 hu = hu Mod 1000 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 res = res & CStr(se) & IIf(ShortTimeFormat, " s", " second" & IIf(se <> 1, _ "s", "")) TimeToString = res End Function |