Rubrik: Datum/Zeit und Timer · Datums- und Zeitfunktionen | VB-Versionen: VB6, VBA | 27.02.13 |
Zeitdifferenz als formatierter String (Tage, Stunden, Minuten und Sekunden) Zeitdifferenz zweier Zeitpunkte ermitteln. Ausgabe als String: Tage, Stunden, Minuten und Sekunden. | ||
Autor: Richard Mittelstädt | Bewertung: | Views: 10.532 |
ohne Homepage | System: Win9x, WinNT, WinXP, Win7, Win8, Win10, Win11 | Beispielprojekt auf CD |
Manchmal wünscht man eine (auffällige?) Anzeige einer Zeitdifferenz in einer angenehmen Text-Darstellung. Die folgende Funktion hat einen recht übersichtlichen Code. Das gewünschte Anzeige-Format kann einfach festgelegt werden.
Zwischendurch kann man auch noch andere Sachen erledigen, z,B. farbliche Veränderungen im Formular auslösen/bewerkstelligen...
Die Zeitdifferenz wird in Tagen, Stunden, Minuten und Sekunden ausgegeben.
Ich benutze das Teil für einen Ebay-Counter (Ende nächstes Angebot).
Diese Lösung ist nicht gedacht für Differenzen von Monaten oder gar Jahren.
Public Function TimeDiffString2(T_STRT, T_ENDE) As String ' **************************************************************** ' Funktion liefert einen String für Zeit-Differenz T_ENDE - T_STRT ' zB. verwendbar für die Anzeige eines Ebay-Artikel-Counters. ' zB.: "3T 12h 32m 07s" (Tage, Stunden, Minuten und Sekunden) ' ' T_STRT Start-Zeitpunkt (Datumswert incl. Jahr, Tag, Uhrzeit) ' T_ENDE Ende- Zeitpunkt (Datumswert incl. Jahr, Tag, Uhrzeit) ' ' 2013-02-23 Funktion erneuert, vereinfacht ' **************************************************************** On Error GoTo ERR_01 Dim DD As Double ' Zeit-Differenz in Tagen DD = T_ENDE - T_STRT ' evtl. DD = CDate(T_ENDE) - CDate(T_STRT) ' ---- (In den Argumenten der Format-Funktion die gewünschte Form der Anzeige festlegen) ---- Select Case DD Case Is >= 1 ' >= 1Tag Nur Sekunden immer 2-stellig (ss) TimeDiffString2 = CInt(Fix(DD)) & "T " & Format(DD - Fix(DD), "h\h n\m ss\s") Case Is >= 1 / 24 ' >= 1h Nur Sekunden immer 2-stellig (ss) TimeDiffString2 = Format(DD, "h\h n\m ss\s") Case Is >= 1 / 24 / 60 ' >= 1m Nur Sekunden immer 2-stellig (ss) TimeDiffString2 = Format(DD, "n\m ss\s") Case Is >= 1 / 24 / 60 / 60 ' >= 1s Sekunden auch 1-stellig (s) TimeDiffString2 = Format(DD, "s\s") Case Else TimeDiffString2 = "0s" End Select Exit Function ERR_01: MsgBox "TimeDiffString2(T_STRT, T_ENDE): " & Err.Number & vbNewLine & Err.Description End Function
Beispielaufruf:
' Zeit-Differenz aktuelle Zeit und End-Zeit Dim vEnd As Variant vEnd = CDate("15.03.2013 10:17:12") MsgBox TimeDiffString2(Now, vEnd)