Rubrik: Datum/Zeit und Timer · Datums- und Zeitfunktionen | VB-Versionen: VB4, VB5, VB6 | 08.09.06 |
Timestamp inkl. Millisekunden Über die Time-Funktion oder den Datumsfunktionen von VB lässt sich zwar sehr leicht die aktuelle Uhrzeit ermitteln, jedoch bleiben Millisekunden hierbei unberücksichtigt. | ||
Autor: Dieter Otter | Bewertung: | Views: 45.324 |
www.tools4vb.de | System: Win9x, WinNT, Win2k, WinXP, Win7, Win8, Win10, Win11 | Beispielprojekt auf CD |
Benötigen Sie einen "millisekundengenauen" Timestamp, scheiten die Standard VB-Funktionen, wie Time oder Now aus. Über die VB-Funktionen lässt sich die aktuelle Zeit immer nur "sekundengenau" ermitteln, d.h. Millisekunden bleiben hier unberücksichtigt.
Abhilfe schafft hier das Auslesen der Systemzeit über das Windows API.
Fügen Sie hierzu nachfolgenden Code in ein Modul ein:
Option Explicit ' zunächst die benötigten API-Deklarationen Private Declare Sub GetSystemTime Lib "kernel32" ( _ lpSystemTime As SYSTEMTIME) Private Type SYSTEMTIME wYear As Integer wMonth As Integer wDayOfWeek As Integer wDay As Integer wHour As Integer wMinute As Integer wSecond As Integer wMilliseconds As Integer End Type
' aktuelle Zeitangabe im Format hh:nn:ss:mmm ' (hh=Stunden, nn=Minuten, ss=Sekunden, mmm=Millisekunden) Public Function FormatSystemTime() As String Dim st As SYSTEMTIME ' Systemzeit ermitteln GetSystemTime st ' TimeStamp hh:nn:ss:mmm With st FormatSystemTime = Format(.wHour, "00") & ":" & Format(.wMinute, "00") & ":" & _ Format(.wSecond, "00") & ":" & Format(.wMilliseconds, "000") End With End Function
Beispiel:
Um das Ganze zu verdeutlichen erstellen wir eine Form und platzieren darauf folgende Controls:
- Timer (Timer1)
- Label (lblTime)
- CommandButton (cmdStart)
Beim Klick auf den Button soll die aktuelle Systemzeit inkl. der Millisekunden im Label-Control ausgegeben werden:
Option Explicit Private Sub cmdStart_Click() ' Timer starten Timer1.Interval = 10 Timer1.Enabled = True End Sub
Private Sub Timer1_Timer() ' Systemzeit anzeigen lblTime.Caption = FormatSystemTime() End Sub
Private Sub Form_Unload(Cancel As Integer) ' Beim Beenden, Timer deaktivieren Timer1.Enabled = False End Sub