1. Diese Seite verwendet Cookies. Wenn du dich weiterhin auf dieser Seite aufhältst, akzeptierst du unseren Einsatz von Cookies. Weitere Informationen

Millisekunden umrechnen in Std min sec Millisekunden

Dieses Thema im Forum "Visual Basic 6.0, VBA & VBScript" wurde erstellt von nkh2016, 20. April 2017 um 10:29 Uhr.

  1. nkh2016

    nkh2016 Grünschnabel

    Hallo...

    Habe folgende Funktion in MS Access

    Eine Zeit liegt in Millisekunden vor....

    Nun sollte diese Zeit in Std:min:sek,Millisekunden umgerechnet werden...

    Es scheitert bei mir in der Zeile (Umrechnung von Minuten)...

    Die wird so angezeigt 01:63:20,2 Die Minuten müssten auf 03 sein... Min = Int(Milsec / 60000)

    Code (Text):
    1. Function Zeit_hhmmss0(Milsec As Double) As String
    2.  
    3. Dim Std As Long
    4. Dim Min As Long
    5. Dim Sec As Long
    6. Dim Zeitmessung As String
    7.  
    8.   Std = Int(Milsec / 3600000)
    9.   Min = Int(Milsec / 60000)
    10.   Sec = Int((Milsec - (Min * 60000)) / 1000)
    11.   Milsec = Milsec - (Min * 60000) - (Sec * 1000)
    12.   Zeit_hhmmss0 = Format$(Std, "00") & ":" & Format$(Min, "00") & ":" & Format$(Sec, "00") & "." & Format$(Milsec, "0")
    13.  
    14. End Function
     
  2. Yaslaw

    Yaslaw n/a Moderator

    Du rechnest die ganzen Millisekunden un Minuten um. 63 Minuten = 1 Stunde und 3 Minuten....

    Nimm die Stunden
    Aus dem Rest, nimm die Minuten
    Aus dem Rest nimm die Sekunden
    Der Rest sind die Millisekunden
    Code (Visual Basic):
    1. Public Function test(iMsec As Long)
    2.     Dim h As Long, m As Long, s As Long
    3.     Dim rest As Long
    4.  
    5.     h = iMsec / 3600000
    6.     rest = iMsec Mod 3600000
    7.     m = rest / 60000
    8.     rest = rest Mod 60000
    9.     s = rest / (1000)
    10.     rest = rest Mod (1000)
    11.  
    12.     test = format$(h, "00") & ":" & format$(m, "00") & ":" & format$(s, "00") & "." & format$(rest, "0")
    13. End Function
     
  3. nkh2016

    nkh2016 Grünschnabel

    Danke @Yaslaw

    Habe dein Beispiel bei mir verwendet..... jedoch irgendwie werden einige Beispiele falsch berechnet...

    111.JPG

    Feld "ZeitMsSchwimmen" ist der Wert berechnet aus ZwischenZeitSchwimmen (die Millisekunden müssten eigentlich stimmen)

    Feld ZeiSchwimmen verwendet deine Funktion, dabei werden kommischerweise einige Felder falsch berechnet....
     
  4. Yaslaw

    Yaslaw n/a Moderator

    Habe eine Bessere Funktion sofern es nicht über 24 Stunden geht
    Code (Visual Basic):
    1. Public Function test(iMsec As Long)
    2.     Const C_DIV = 24# * 60# * 60# * 1000#
    3.     Dim val As Double
    4.     Dim time As Date
    5.    
    6.     time = CDate(iMsec / C_DIV)
    7.     test = format(time, "HH:NN:SS") & "," & (iMsec Mod 1000#)
    8. End Function
    Code (Text):
    1. ?test(894600)
    2. 00:14:55,600
    3.  
    4. ?test(39594600)
    5. 10:59:55,600
     
  5. nkh2016

    nkh2016 Grünschnabel

    aaa.jpg aaa.jpg

    Hallo @Yaslaw

    Danke für deine bisherigen Bemühungen....
    Problem besteht noch immer, vor allem wenn die Zeit bei .... 59,9 ist.... es wird dabei offensichtlich eine Sekunde zuviel dazu gerechnet....

    Hab die Access-Datei mit hochgeladen.... (hoffe nicht, dass ich dort einen Fehler bei der Berechnung in Millisekunden mache...)


    Code (Text):
    1. Function ZeitInMilsec(Zwischenzeit As Variant) As Double
    2.  
    3. Dim Stunden As Long
    4. Dim Minuten As Long
    5. Dim Sekunden As Long
    6. Dim Zehntel As Long
    7.  
    8. Stunden = Left(Zwischenzeit, 2)
    9. Minuten = Mid(Zwischenzeit, 4, 2)
    10. Sekunden = Mid(Zwischenzeit, 7, 2)
    11. Zehntel = Mid(Zwischenzeit, 10, 1)
    12.  
    13. ZeitInMilsec = Stunden * 3600000 + Minuten * 60000 + Sekunden * 1000 + Zehntel * 100
    14. End Function
    Ich habe diese Funktion selbst erstellt (mit meinen bescheidenen vba-Kenntnissen)
     

    Anhänge:

    • aaa.rar
      Dateigröße:
      140,3 KB
      Aufrufe:
      1
  6. nkh2016

    nkh2016 Grünschnabel

    Ich habe diese Lösung in einem anderen Forum bekommen und die funktioniert komischerweise....

    Code (Text):
    1. '// ModF zerlegt x in eine Ganzzahl und einen Nachkommaanteil.
    2. Public Function ModF#(ByVal x#, ip&)
    3.   ip = Fix(x)
    4.   ModF = x - ip
    5. End Function
    6.  
    7. Public Function MSec2HhNnSsMSec$(ByVal msec#, Optional ByVal NumHPlaces& = 2)
    8.  
    9.    Const MSEC_PER_HOUR& = 60& * 60 * 1000
    10.  
    11.    Dim fh#, h&, fm#, m&, fs#, s&
    12.  
    13.    fh = ModF(msec / MSEC_PER_HOUR, h)
    14.    fm = ModF(fh * 60, m)
    15.    fs = ModF(fm * 60, s)
    16.    MSec2HhNnSsMSec = Format$(h, String$(NumHPlaces, "0") & ":") _
    17.                     & Format$(m, "00:") _
    18.                     & Format$(s, "00.") _
    19.                     & Format$(CLng(fs * 1000), "000")
    20. End Function
     
Die Seite wird geladen...
Ähnliche Themen - Millisekunden umrechnen Millisekunden
  1. lennysf
    Antworten:
    3
    Aufrufe:
    7.904
  2. Goldman
    Antworten:
    2
    Aufrufe:
    2.085