Thought this might be useful to some people to partially emulate some of VBs date functions

#COMPILE EXE
#DIM ALL

#INCLUDE "win32api.inc"

'The following are interval specifications for the DateDiff and DateAdd functions
'Only periods of fixed time are included (so no months or years)
'Although these could be easily calculated by other means
%INT_SECONDS = 10000000
%INT_MINUTES = 600000000
%INT_HOURS = 36000000000
%INT_DAYS = 864000000000

TYPE DateSplit
LowPart AS DWORD
HighPart AS DWORD
END TYPE

UNION DateQuad
U AS DateSplit
QuadPart AS QUAD
END UNION

FUNCTION DateDiff(BYVAL Interval AS QUAD,BYVAL udtSource AS SYSTEMTIME,BYVAL udtDest AS SYSTEMTIME) AS QUAD
LOCAL udtFileSource AS FILETIME,udtFileDest AS FILETIME
LOCAL udtQuadSource AS DateQuad,udtQuadDest AS DateQuad

'convert to filetime
systemtimetofiletime udtSource,udtFileSource
systemtimetofiletime udtDest,udtFileDest

'convert to quad time
udtQuadSource.u.LowPart=udtFileSource.dwLowDateTime
udtQuadSource.u.HighPart=udtFileSource.dwHighDateTime
udtQuadDest.u.LowPart=udtFileDest.dwLowDateTime
udtQuadDest.u.HighPart=udtFileDest.dwHighDateTime

FUNCTION=(udtQuadDest.QuadPart - udtQuadSource.QuadPart)\interval
END FUNCTION

SUB DateAdd(BYVAL Interval AS QUAD,BYVAL udtSource AS SYSTEMTIME,BYVAL Amount AS QUAD,BYREF udtDest AS SYSTEMTIME)
Amount=Amount * Interval
LOCAL udtFileSource AS FILETIME,udtFileDest AS FILETIME
LOCAL udtQuadSource AS DateQuad,udtQuadDest AS DateQuad

'convert source to FileTime
systemtimetofiletime udtSource,udtFileSource

'convert to quad time
udtQuadSource.u.LowPart=udtFileSource.dwLowDateTime
udtQuadSource.u.HighPart=udtFileSource.dwHighDateTime

'add the interval
udtQuadSource.QuadPart = udtQuadSource.QuadPart + Amount
'copy back to dest filetime structure
udtFileDest.dwLowDateTime=udtQuadSource.u.LowPart
udtFileDest.dwHighDateTime=udtQuadSource.u.HighPart

'convert filetime to systemtime
filetimetosystemtime udtFileDest,udtDest
END SUB

FUNCTION PBMAIN () AS LONG

LOCAL udtNow AS SYSTEMTIME,udtCompare AS SYSTEMTIME,qdDifference AS QUAD

'Get the current (users) time
GetLocalTime udtNow

'Now we will add on 3 days to the system time and store the result in udtCompare
DateAdd %INT_DAYS,udtNow,3,udtCompare

'Now get the number of hours difference between the 2 dates
qdDifference=DateDiff(%INT_HOURS,udtNow,udtCompare)

MSGBOX STR$(qdDifference) + " hours between the dates"

END FUNCTION

------------------