Akuelles Datum mit Uhrzeit + millisekunden Anzeigen in VB6

  • VB6

Es gibt 14 Antworten in diesem Thema. Der letzte Beitrag () ist von Marcus Gräfe.

    Akuelles Datum mit Uhrzeit + millisekunden Anzeigen in VB6

    Hallo
    Ich würde gerne das aktuelle Datum mit Uhrzeit + ms anzeigen lassen-
    Sollte dann z.b. so aussehen 20.12.2022 22:21:11:245
    Die Uhrzeit + ms habe ich im Netz gefunden, leider bekomme ich in die Variable nicht das aktuelle Datum mit rein...
    Vielleicht kann mir jemand helfen oder weiss eine einfache Lösung...
    Der Quellcode ist noch in VB6

    Visual Basic-Quellcode

    1. Option Explicit
    2. Private Declare Sub GetSystemTime Lib "kernel32" ( _
    3. lpSystemTime As SYSTEMTIME)
    4. Private Type SYSTEMTIME
    5. wYear As Integer
    6. wMonth As Integer
    7. wDayOfWeek As Integer
    8. wDay As Integer
    9. wHour As Integer
    10. wMinute As Integer
    11. wSecond As Integer
    12. wMilliseconds As Integer
    13. End Type
    14. Private Sub Form_Load()
    15. Rem Timer starten
    16. Timer1.Interval = 10
    17. Timer1.Enabled = True
    18. End Sub
    19. Public Function FormatSystemTime() As String
    20. Dim st As SYSTEMTIME
    21. ' Systemzeit ermitteln
    22. GetSystemTime st
    23. ' TimeStamp hh:nn:ss:mmm
    24. With st
    25. 'Das geht...
    26. FormatSystemTime = Format(.wHour, "00") + ":" + Format(.wMinute, "00") + ":" + _
    27. Format(.wSecond, "00") + ":" + Format(.wMilliseconds, "000")
    28. 'da mache ich was falsch...
    29. 'FormatSystemTime = Format(wDay, "00") + Format(.wHour, "00") + ":" + Format(.wMinute, "00") + ":" + _
    30. 'Format(.wSecond, "00") + ":" + Format(.wMilliseconds, "000")
    31. End With
    32. End Function
    33. Private Sub Timer1_Timer()
    34. ' Systemzeit anzeigen
    35. Label1.Caption = FormatSystemTime()
    36. End Sub



    Dieser Beitrag wurde bereits 2 mal editiert, zuletzt von „Marcuse“ ()

    Einfach konsequent weitermachen und bei wDay nicht den Punkt davor vergessen.

    Visual Basic-Quellcode

    1. FormatSystemTime = Format(.wDay, "00") + "." + Format(.wMonth, "00") + "." + Format(.wYear, "00") + " - " + Format(.wHour, "00") + ":" + Format(.wMinute, "00") + ":" + _
    2. Format(.wSecond, "00") + ":" + Format(.wMilliseconds, "000")
    Aber - wie Du siehst - muss auch die Zeitzone beachtet werden. Mein Post ist von 22 Uhr irgendwas, aber GetSystemTime ergibt 21 Uhr irgendwas.
    Bilder
    • Result.png

      2,17 kB, 308×233, 94 mal angesehen
    Dieser Beitrag wurde bereits 5 mal editiert, zuletzt von „VaporiZed“, mal wieder aus Grammatikgründen.

    Aufgrund spontaner Selbsteintrübung sind all meine Glaskugeln beim Hersteller. Lasst mich daher bitte nicht den Spekulatiusbackmodus wechseln.
    Hallo
    Ja super werde es gleich mal testen, ja das wäre die nächste Frage gewesen. wie ich in das Format noch ne Variable einbauen kann für die Zeitzone +, - 1 stunde oder so
    sollte natürlich auch um 23.10 Uhr richtig rechnen dan mit Datum für den nächsten Tag...

    FormatSystemTime = Format(.wDay, "00") + "." + Format(.wMonth, "00") + "." + Format(.wYear, "00") + " - " + Format(.wHour +3 , "00") + ":" + Format(.wMinute, "00") + ":" + _
    Format(.wSecond, "00") + ":" + Format(.wMilliseconds, "000")

    das geht schon mal nicht...
    Hallo
    Danke für die schnelle Antwort, leider muss ich mit einer festen Zahl rechnen da sich meine Uhrzeit auf UTC bezieht, somit Sommer und Normalzeit
    mit einer extra Berechnung abgezogen oder addiert wird, die funktioniert schon, somit müsste ich nur noch ne Offset Zahl in die Zeile reinbringen...
    also ne einfache Variable..
    Is das möglich ?
    Hi

    Ich verstehe Dein Problem nicht. Die API GetSystemTime gibt Dir die SYSTEMTIME (UTC) zurück. Mit den anderen von mir genannten APIs, konvertierst Du die SYSTEMTIME (UTC) in die lokale SYSTEMTIME. Dann passt das auch mit der Uhrzeit.
    Mfg -Franky-
    Hallo
    Ja danke nochmal für die Unterstützung, leider blicke ich das mit der API GetSystemtime nicht so ganz, also eigentlich gar nicht...
    Kannst du mir evtl. den Code so ändern das z.b. 2 Stunden der aktuellen Rechnerzeit abgezogen wird und dargestellt ?
    Vielleicht verstehe ich es dann ..
    Das mit dem Datum vor der Uhrzeit mit millisekunden geht schon mal super.
    Gruss
    Marcus
    @Marcuse Wie wäre es mit einem Umstieg auf VB.NET?
    Falls Du diesen Code kopierst, achte auf die C&P-Bremse.
    Jede einzelne Zeile Deines Programms, die Du nicht explizit getestet hast, ist falsch :!:
    Ein guter .NET-Snippetkonverter (der ist verfügbar).
    Programmierfragen über PN / Konversation werden ignoriert!
    Hi

    Marcuse schrieb:

    Kannst du mir evtl. den Code so ändern das z.b. 2 Stunden der aktuellen Rechnerzeit abgezogen wird und dargestellt ?

    Ähm, ich dachte Du wolltest die UTC-Zeit in die Lokale-Zeit konvertieren?
    Spoiler anzeigen

    Visual Basic-Quellcode

    1. Option Explicit
    2. Private Type SYSTEMTIME
    3. wYear As Integer
    4. wMonth As Integer
    5. wDayOfWeek As Integer
    6. wDay As Integer
    7. wHour As Integer
    8. wMinute As Integer
    9. wSecond As Integer
    10. wMilliseconds As Integer
    11. End Type
    12. Private Type FILETIME
    13. dwLowDateTime As Long
    14. dwHighDateTime As Long
    15. End Type
    16. Private Declare Sub GetSystemTime Lib "Kernel32.dll" ( _
    17. ByRef lpSystemTime As SYSTEMTIME)
    18. Private Declare Function SystemTimeToFileTime Lib "Kernel32.dll" ( _
    19. ByRef lpSystemTime As SYSTEMTIME, _
    20. ByRef lpFileTime As FILETIME) As Long
    21. Private Declare Function FileTimeToLocalFileTime Lib "Kernel32.dll" ( _
    22. ByRef lpFileTime As FILETIME, _
    23. ByRef lpLocalFileTime As FILETIME) As Long
    24. Private Declare Function FileTimeToSystemTime Lib "Kernel32.dll" ( _
    25. ByRef lpFileTime As FILETIME, _
    26. ByRef lpSystemTime As SYSTEMTIME) As Long
    27. Private Sub Form_Load()
    28. Dim tFILETIME As FILETIME
    29. Dim tSYSTEMTIME As SYSTEMTIME
    30. Call GetSystemTime(tSYSTEMTIME)
    31. If CBool(SystemTimeToFileTime(tSYSTEMTIME, tFILETIME)) Then
    32. If CBool(FileTimeToLocalFileTime(tFILETIME, tFILETIME)) Then
    33. If CBool(FileTimeToSystemTime(tFILETIME, tSYSTEMTIME)) Then
    34. With tSYSTEMTIME
    35. Debug.Print Format$(.wDay, "00") & "." & Format$(.wMonth, "00") & "." & _
    36. Format$(.wYear, "00") & " - " & Format$(.wHour, "00") & ":" & _
    37. Format$(.wMinute, "00") + ":" & Format$(.wSecond, "00") & ":" & _
    38. Format$(.wMilliseconds, "000")
    39. End With
    40. End If
    41. End If
    42. End If
    43. End Sub

    Mfg -Franky-
    Hallo
    Ja danke. leider kann ich es gerade nicht so richtig testen da ich mich derzeit in einer anderen Zeitzone befinde,(bin nicht in Deuschland) mein Rechner Zeigt mir akuell UTC.
    Wenn ich es richtig verstanden habe zeigt das Programm nun immer die UTC Zeit. somit auch wenn Sommerzeit ist ?
    Das wäre super genau das was ich suche.
    Gruss Marcus
    @Marcuse Falls du den von @-Franky- geposteten Code meinst: der zeigt die lokale Zeitzone an, soeben getestet (also bei mir GMT+1).

    EDIT: Dein eigener Code zeigt UTC.
    Besucht auch mein anderes Forum:
    Das Amateurfilm-Forum
    Hallo
    Also nun stehe ich etwas auf dem Schlauch..
    Was ich suche ist ein Programm mit Datum und Uhrzeit + ms das mir immer UTC anzeigt da sich auf diese Zeit alle meine Berechnungen beziehen..

    Franky war so nett und hat mir ein Code geschrieben der bei mir hier "nur" die aktuelle Uhrzeit anzeigt, da ich aber mich derzeit in einer anderen Zeitzone befinde
    (hier gilt sowiso UTC Zeit) somit zeigt mir das Programm von Franky die aktuelle Rechnerzeit an.

    UTC= -1 Stunde also hier ist es derzeit 20:10 Uhr in Deutschland ist es 21:10 Uhr

    Das Programm was ich gepostet habe zeigt doch nur die aktuelle Rechnerzeit und nicht UTC oder nicht ?
    Ob das Prgramm von Franky in Deutschland auch 20:10 anzeigt kann ich leider nicht sagen...
    Die Aussage von dir Marcus Gräfe ist gerade umgekehrt wenn ich richhtig versanden habe oder ?
    Bin gerade etwas verwirrt...
    Aber dennoch erstmal danke an alle für die Unterstützung, alle wäre ich aufgeschmissen..

    Marcuse schrieb:

    Das Programm was ich gepostet habe zeigt doch nur die aktuelle Rechnerzeit und nicht UTC oder nicht ?

    Ich kann dir nur folgendes sagen: wenn ich deinen Code aus Post #1 1:1 so in ein leeres VB6-Projekt mit Timer und Label einfüge, so erhalte ich eine Zeit (mit ms), die genau 1 h hinter* meiner Rechnerzeit liegt. Und die Rechnerzeit ist definitiv GMT+1, also deutsche Winterzeit.

    *gleich zurück, also wenn ich 14 Uhr habe, steht dort 13 Uhr
    Besucht auch mein anderes Forum:
    Das Amateurfilm-Forum