vb@rchiv
VB Classic
VB.NET
ADO.NET
VBA
C#
Erstellen von dynamischen Kontextmen?s - wann immer Sie sie brauchen!  
 vb@rchiv Quick-Search: Suche startenErweiterte Suche starten   Impressum  | Datenschutz  | vb@rchiv CD Vol.6  | Shop Copyright ©2000-2024
 
zurück
Rubrik: Datum/Zeit und Timer · Datums- und Zeitfunktionen   |   VB-Versionen: VB5, VB609.05.02
Automatische Zeitformatierung

Vollautomatische Konvertierung von Ganzzahlen in beliebige und frei veränderbare Zeitformate, wie z.B. hh:mm:ss.

Autor:   Sebastian FreitagBewertung:     [ Jetzt bewerten ]Views:  27.489 
ohne HomepageSystem:  Win9x, WinNT, Win2k, WinXP, Win7, Win8, Win10, Win11 Beispielprojekt auf CD 

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

dTage, Normalformat
ddTage, Zweiziffernformat (besteht die Zahl aus nur einer Ziffer, wird eine 0 davor gestellt
hStunden, Normalformat
hhStunden, Zweiziffernformat
mMinuten, Normalformat
mmMinuten, Zweiziffernformat
sSekunden, Normalformat
ssSekunden, 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:

lngInputValueDie Ganzzahl, die in das angegebene Format umgewandelt werden soll.
sInputTypeZeitwert 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.
sFormatDas Format für die Ausgabe. Standard ist "hh:mm:ss"
sMaxValueDer 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

Dieser Tipp wurde bereits 27.489 mal aufgerufen.

Voriger Tipp   |   Zufälliger Tipp   |   Nächster Tipp

Über diesen Tipp im Forum diskutieren
Haben Sie Fragen oder Anregungen zu diesem Tipp, können Sie gerne mit anderen darüber in unserem Forum diskutieren.

Neue Diskussion eröffnen

nach obenzurück


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.
 
   

Druckansicht Druckansicht Copyright ©2000-2024 vb@rchiv Dieter Otter
Alle 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.

Diese Seiten wurden optimiert für eine Bildschirmauflösung von mind. 1280x1024 Pixel