vb@rchiv
VB Classic
VB.NET
ADO.NET
VBA
C#

https://www.vbarchiv.net
Rubrik: Datum/Zeit und Timer · Datums- und Zeitfunktionen   |   VB-Versionen: VB6, VBA27.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ädtBewertung:  Views:  10.532 
ohne HomepageSystem:  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)



Anzeige

Kauftipp Unser Dauerbrenner!Diesen und auch alle anderen Tipps & Tricks finden Sie auch auf unserer aktuellen vb@rchiv  Vol.6
(einschl. Beispielprojekt!)

Ein absolutes Muss - Geballtes Wissen aus mehr als 8 Jahren vb@rchiv!
- nahezu alle Tipps & Tricks und Workshops mit Beispielprojekten
- Symbol-Galerie mit mehr als 3.200 Icons im modernen Look
Weitere Infos - 4 Entwickler-Vollversionen (u.a. sevFTP für .NET), Online-Update-Funktion u.v.m.
 
 
Copyright ©2000-2024 vb@rchiv Dieter OtterAlle Rechte vorbehalten.


Microsoft, Windows und Visual Basic sind entweder eingetragene Marken oder Marken der Microsoft Corporation in den USA und/oder anderen Ländern. Weitere auf dieser Homepage aufgeführten Produkt- und Firmennamen können geschützte Marken ihrer jeweiligen Inhaber sein.