Visual Basic - Technik, FAQ, Tricks, Beispiele

Home / Allgemein / Zeit / TimeStamp

TimeStamp ohne Überlauf

Historie
25.11.2002Nutzung der API-Routine Sleep, um die prozentuale CPU-Nutzung (s. Task-Manager) niedrig zu halten.

Motivation

Zeitmessungen können entweder mit Timer oder mit Now durchgeführt werden. Beide haben ihre Vor- und Nachteile:

Während Timer die Zeit auf Sekundenbruchteile genau angibt (allerdings maximal bis Mitternacht, da es dann wieder bei 0 losgeht), läuft Now durchgehend bis ins Jahr 9999 (allerdings nur auf eine Sekunde genau).

Code / Quelltext

Die folgende Funktion gibt einen Zeitstempel zurück (analog zu Now), der jedoch auf Sekundenbruchteile genau ist, also die Vorteile der beiden o.g. Varianten verbindet:

Public Function TimeStamp( _
    Optional ByVal Seconds As Double _
  ) As Double

  TimeStamp = Int(Now) + (Timer + Seconds) / 86400

End Function

Eine Pausen-Routine

Man beachte, dass optional ein Zeit-Offset in Sekunden angegeben werden kann. Dadurch ist z.B. die Realisierung einer Pausen-Routine sehr einfach:

'Im Deklarationsteil:
Private Declare Sub Sleep Lib "kernel32" ( _
    ByVal dwMilliseconds As Long)
'Die Prozedur:
Public Sub Pause( _
    ByVal Seconds As Double, _
    Optional ByVal Events As Boolean = False _
  )
  Dim t As Double
  
  t = TimeStamp(Seconds)
  Do Until TimeStamp >= t
    Sleep 1
    If Events Then DoEvents
  Loop
End Sub

© Jost Schwider, 20.05.2000-25.11.2002 - http://vb-tec.de/timestmp.htm