Rubrik: Datum/Zeit und Timer · Datums- und Zeitfunktionen | VB-Versionen: VB5, VB6 | 09.05.02 |
![]() Vollautomatische Konvertierung von Ganzzahlen in beliebige und frei veränderbare Zeitformate, wie z.B. hh:mm:ss. | ||
Autor: ![]() | Bewertung: ![]() ![]() ![]() ![]() ![]() | Views: 27.636 |
ohne Homepage | System: Win9x, WinNT, Win2k, WinXP, Win7, Win8, Win10, Win11 | ![]() |
Diese Funktion konvertiert eine Ganzzahl in ein beliebiges Format - und zwar Zeitformat. Die Anordnung und das Aussehen des Formates kann frei verändert werden, es ist zum Beispiel möglich, Text einzufügen, die Sekunden vor die Minuten zu stellen, einen Wert mehrfach anzuzeigen usw.
Tabelle der unterstützten Zeichenkonstanten
d | Tage, Normalformat |
dd | Tage, Zweiziffernformat (besteht die Zahl aus nur einer Ziffer, wird eine 0 davor gestellt |
h | Stunden, Normalformat |
hh | Stunden, Zweiziffernformat |
m | Minuten, Normalformat |
mm | Minuten, Zweiziffernformat |
s | Sekunden, Normalformat |
ss | Sekunden, Zweiziffernformat |
(0) | "Tag" / "Tage" (wird angepasst) |
(1) | "Stunde" / "Stunden" (wird angepasst) |
(2) | "Minute" / "Minuten" (wird angepasst) |
(3) | "Sekunde" / "Sekunden" (wird angepasst) |
(&) | "und" (enthält ein "d", würde deshalb verändert) |
Diese Liste kann natürlich beliebig erweitert werden, z.B. wenn Sie Text einfügen möchten, der ein d, h, m oder s enthält (diese würden ja durch Stunden, Minuten etc. ersetzt werden).
Parameter:
lngInputValue | Die Ganzzahl, die in das angegebene Format umgewandelt werden soll. |
sInputType | Zeitwert der Ganzzahl. "d" für Tage, "h" für Stunden, "m" für Minuten, "s" für Sekunden. Standard ist "s".Bitte beachten Sie, keine zu großen Werte einzugeben (InputValue + InputType), da dies zu einem Overflow-Error führen kann. |
sFormat | Das Format für die Ausgabe. Standard ist "hh:mm:ss" |
sMaxValue | Der höchste Wert, der ausgerechnet wird. "d" für Tage, "h" für Stunden, "m" für Minuten, "s" für Sekunden. Wird hier z.B. "h" angegeben, werden die Tage nicht ausgerechnet. 25 Stunden bleiben so 25 Stunden und werden nicht zu 1 Tag, 1 Stunde. Standard ist "d". |
Function FormatTime(ByVal lngInputValue As Long, _ Optional ByVal sInputType As String = "s", _ Optional ByVal sFormat As String = "hh:mm:ss", _ Optional ByVal sMaxValue As String = "d") As String ' Eingabewert in Sekunden umrechnen Select Case sInputType Case "m" lngInputValue = lngInputValue * 60 Case "h" lngInputValue = lngInputValue * 3600 Case "d" lngInputValue = lngInputValue * 86400 Case "s" Case Else Exit Function End Select ' MaxValue in schönere Form bringen ' (zum Rechnen) Dim iMaxValue As Integer Select Case sMaxValue Case "d" iMaxValue = 0 Case "h" iMaxValue = 1 Case "m" iMaxValue = 2 Case "s" iMaxValue = 3 Case Else iMaxValue = 0 End Select Dim d As Long Dim h As Long Dim m As Long Dim s As Long ' Tage ausrechnen If iMaxValue = 0 Then d = Int(lngInputValue / 86400) lngInputValue = lngInputValue - (86400 * d) End If ' Stunden ausrechnen If iMaxValue <= 1 Then h = Int(lngInputValue / 3600) lngInputValue = lngInputValue - (3600 * h) End If ' Minuten ausrechnen If iMaxValue <= 2 Then m = Int(lngInputValue / 60) lngInputValue = lngInputValue - (60 * m) End If ' Rest: Sekunden ;-) s = lngInputValue Dim dd As String Dim dh As String Dim dm As String Dim ds As String ' ggf. eine Null vor der Zahl einfügen dd = Format$(d, "00") dh = Format$(h, "00") dm = Format$(m, "00") ds = Format$(s, "00") ' "dd" durch Tage ersetzen (ggf. mit Null) sFormat = Replace(sFormat, "dd", dd) ' "d" durch Tage ersetzen sFormat = Replace(sFormat, "d", d) ' "hh" durch Stunden ersetzen (ggf. mit Null) sFormat = Replace(sFormat, "hh", dh) ' "h" durch Stunden ersetzen sFormat = Replace(sFormat, "h", h) ' "mm" durch Minuten ersetzen (ggf. mit Null) sFormat = Replace(sFormat, "mm", dm) ' "m" durch Minuten ersetzen sFormat = Replace(sFormat, "m", m) ' "ss" durch Sekunden ersetzen (ggf. mit Null) sFormat = Replace(sFormat, "ss", ds) ' "s" durch Sekunden ersetzen sFormat = Replace(sFormat, "s", s) Dim Textd As String Dim Texth As String Dim Textm As String Dim Texts As String If d = 1 Then Textd = "Tag" Else Textd = "Tage" If h = 1 Then Texth = "Stunde" Else Texth = "Stunden" If m = 1 Then Textm = "Minute" Else Textm = "Minuten" If s = 1 Then Texts = "Sekunde" Else Texts = "Sekunden" ' (0) durch Tag / Tage ersetzen sFormat = Replace(sFormat, "(0)", Textd) ' (1) durch Stunde / Stunden ersetzen sFormat = Replace(sFormat, "(1)", Texth) ' (2) durch Minute / Minuten ersetzen sFormat = Replace(sFormat, "(2)", Textm) ' (3) durch Sekunde / Sekunden ersetzen sFormat = Replace(sFormat, "(3)", Texts) ' (&) durch und ersetzen sFormat = Replace(sFormat, "(&)", "und") FormatTime = sFormat End Function
Beispiele:
FormatTime(1000) ' Ausgabe: 00:16:40
FormatTime(1000, "m") ' Ausgabe: 16:40:00
FormatTime(2000, "m") ' Ausgabe: 09:20:00
FormatTime(2000, "m", "d (0), hh:mm:ss") ' Ausgabe: 1 Tag, 09:20:00
FormatTime(2000, "m", "hh:mm:ss", "h") ' Ausgabe: 33:20:00
FormatTime(3967, "s", "h:m:s") ' Ausgabe: 1:6:7
FormatTime(200000, "s", "d (0), h (1), m (2) (&) s (3)", "d") ' Ausgabe: 2 Tage, 7 Stunden, 33 Minuten und 20 Sekunden
FormatTime(9, "s", "s / ss / s / ss") ' Ausgabe: 9 / 09 / 9 / 09
FormatTime(1, "m", "(2)") ' Ausgabe: Minute