#If Win16 Then
Private Declare Function timeGetTime Lib _ "MMSYSTEM.DLL" () As Long #Else Private Declare Function timeGetTime Lib "winmm.dll" _ () As Long #End If Function BetterNow() As Date Static offset As Date Static uptimeMsOld As Long Dim uptimeMsNew As Long Const oneSecond = 1 / (24# * 60 * 60) Const oneMs = 1 / (24# * 60 * 60 * 1000) uptimeMsNew = timeGetTime() ' check to see if it is first time function called or ' if timeGetTime rolled over (happens every 47 days) If offset = 0 Or uptimeMsNew < uptimeMsOld Then offset = Date - uptimeMsNew * oneMs + CDbl(Timer) * _ oneSecond uptimeMsOld = uptimeMsNew End If BetterNow = uptimeMsNew * oneMs + offset End Function |