Code: Select all
Procedure.q getUTCDate()
Protected UTCSystemTime.SYSTEMTIME
Protected UTCFileTime.FILETIME
Protected qDate.q
GetSystemTime_(UTCSystemTime)
SystemTimeToFileTime_(UTCSystemTime, UTCFileTime)
qDate = (PeekQ(@UTCFileTime) - 116444736000000000) / 10000000
ProcedureReturn qDate
EndProcedure
UTCDate = getUTCDate()
LOCDate = Date()
Debug "UTCDate=" + Str(UTCDate)
Debug "LOCDate=" + Str(LOCDate)
Debug "LOCDate - UTCDate=" + Str(LOCDate - UTCDate)
I don't actually know the reason for "116444736" in the above. I originally found this in Mistrel's posting ElapsedMilliseconds for C/C++, and on Googling 116444736 found this constant used in many time functions. Maybe someone can explain it's significance. I just know the above works. (My timezone is UTC+10.)
Edit: changed Procedure.i to Procedure.q to handle dates after 2038.