Global ExactDate. q
Global ExactDateElapsed. q
Procedure InitExactDate ()
Protected date
date = Date ()
Repeat
Delay (1)
Until Not Date () = date
ExactDateElapsed = ElapsedMilliseconds ()
ExactDate = Date () * 1000
EndProcedure
Procedure. q GetExactDate (ElapsedMilliseconds. q)
ProcedureReturn ExactDate + (ElapsedMilliseconds - ExactDateElapsed)
EndProcedure
The results, however, count up from 0 to 1023. In a test with a millisecond Delay () results came in each second millisecond, but after 1022 there was 0. How to calculate the exact millisecond value out of the exact date? ... not using string functions.
Global TimeStampOffset
Procedure InitTimeStamp()
;Get ms offset of elapsedmilliseconds() to date()
Protected k
k = Date()
While k = Date()
Delay(0)
Wend
TimeStampOffset = Val(Right(Str(ElapsedMilliseconds()), 3))
EndProcedure
;Example
InitTimeStamp()
For i = 1 To 100
Debug FormatDate("%hh:%ii:%ss", Date()) + "." + Right(Str(ElapsedMilliseconds() - TimeStampOffset), 3)
Delay(25)
Next i
Global TimeStampOffset
Procedure InitTimeStamp()
;Get ms offset of elapsedmilliseconds() to date()
Protected k
k = Date()
While k = Date()
Delay(0)
Wend
TimeStampOffset = Val(Right(Str(ElapsedMilliseconds()), 3))
EndProcedure
;Example
InitTimeStamp()
For i = 1 To 100
Debug FormatDate("%hh:%ii:%ss", Date()) + "." + Right(Str(ElapsedMilliseconds() - TimeStampOffset), 3)
Delay(25)
Next i
HeX0R, I was wondering what your reason for the Delay is? Why do you wait for a second to tick by?
Global TimeStampOffset = Val(Right(Str(ElapsedMilliseconds()), 3))
For i = 1 To 100
Debug FormatDate("%hh:%ii:%ss", Date()) + "." + Right(Str(ElapsedMilliseconds() - TimeStampOffset), 3)
Delay(25)
Next i