Rubrik: Datum/Zeit und Timer · Datums- und Zeitfunktionen | VB-Versionen: VB6 | 20.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 Otter | Bewertung: | Views: 23.002 |
www.tools4vb.de | System: 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")