[CODE] Easy way to get millisecond-wise date
Posted: Sat Jan 09, 2016 8:23 am
Thought I'd share it with you.
Here with global variables:
Code: Select all
Procedure. q InitExactDate (getVar = 0)
Protected date
Static ExactDate. q
Static ExactDateElapsed. q
If getVar = 1
ProcedureReturn ExactDate
ElseIf getVar = 2
ProcedureReturn ExactDateElapsed
EndIf
date = Date ()
Repeat
Delay (1)
Until Not Date () = date
ExactDateElapsed = ElapsedMilliseconds ()
ExactDate = Date () * 1000
EndProcedure
Procedure. q GetExactDate (ElapsedMilliseconds. q)
ProcedureReturn InitExactDate (1) + (ElapsedMilliseconds - InitExactDate (2))
EndProcedure
Procedure. l GetRealDate (ExactDate. q) ; GetUnixDate (ExactDate. q)
ProcedureReturn Int (0.001 * ExactDate)
EndProcedure
; EXAMPLE
Define sync$
InitExactDate ()
Debug "Starting " + FormatDate ("%mm-%dd-%yyyy %hh:%ii:%ss", GetRealDate (GetExactDate (ElapsedMilliseconds ())))
Repeat
If GetRealDate (GetExactDate (ElapsedMilliseconds ())) = Date ()
sync$ = "yes" : Else : sync$ = "no -- NO SYNCHRONIZATION!!!" : EndIf
Debug Str (GetExactDate (ElapsedMilliseconds ())) + Space (1) + "synchronized=" + sync$
Delay (10)
ForEver
Code: Select all
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