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

https://www.vbarchiv.net
Rubrik: Datum/Zeit und Timer · Datums- und Zeitfunktionen   |   VB-Versionen: VB620.02.04
Sekunden schnell nach HH:MM:SS umwandeln

Dieser Tipp zeigt, wie sich Sekunden sehr schnell und ohne große Umrechenaktionen in das Format HH:MM:SS umwandeln lassen.

Autor:   Dieter OtterBewertung:  Views:  23.002 
www.tools4vb.deSystem:  Win9x, WinNT, Win2k, WinXP, Win7, Win8, Win10, Win11 Beispielprojekt auf CD 

Heute zeigen wir Ihnen eine schnelle und unkomplizierte Variante, wie sich Sekunden in das Format HH:MM:SS umwandeln lassen. Die meisten haben hierfür wahrscheinlich folgenden Code verwendet:

Dim nMin As Long
Dim nHour As Long
Dim nSec As Long
Dim sTime As String
 
nSec = 125  ' entspricht 00:02:05
 
nHour = nSec \ 3600
nSec = nSec - (nHour * 3600)
nMin = nSec \ 60
nSec = nSec - (nMin * 60)
 
sTime = Format$(nHour, "00") & ":" & _
  Format$(nMin, "00") & ":" & _
  Format$(nSec, "00")

Es geht aber auch einfacher und schneller.
Man muss nur wissen, dass Datum und Uhrzeit intern als Double-Wert gespeichert wird, wobei die Ganzzahl das Datum darstelltt und demzufolge die Nachkommazahl die Uhrzeit.

Eine Sekunde entspricht hierbei dem Wert 0.0000115741 oder als Bruch ausgedrückt: 1 / 86400. Dies lässt sich leicht überprüfen:

Dim nValue As Double
nValue = CDbl(CDate("00:00:01"))
MsgBox CStr(nValue)
Mit diesem Wissen sollte es kein Problem darstellen, eine beliebige Sekundenvorgabe ins Format hh:mm:ss umzuwandeln:

Dim nSec As Long
Dim sTime As String
 
sTime = Format$(CDate(CDbl(nSek * (1 / 86400))), "hh:nn:ss")

Und das Ganze verpacken wir jetzt natürlich in eine Funktion:

' Sekunden nach hh:mm:ss umrechnen
Public Function FormatSeconds(ByVal nSeconds As Long, _
  Optional ByVal sFormat As String = "hh:nn:ss") As String
 
  ' Falls anstelle nn mm im Ausgabeformat angegeben wurde
  sFormat = Replace(sFormat, "mm", "nn") 
 
  FormatSeconds = Format$(CDate(CDbl(nSeconds * (1 / 86400))), sFormat)
End Function

Die Funktion wird wie folgt aufgerufen:

' Sekunden nach hh:mm:ss umwandeln
MsgBox FormatSeconds(125)
' Sekunden nach hh:mm umwandeln
MsgBox FormatSeconds(125, "hh:mm")



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.