'Compiles as-is in PBWin 10 or PBCC 6. #compile exe #dim all #if %pb_cc32 'Ignored by PBWin, no need to remove. #console off 'Stops creation of unneeded console in PBCC #endif type SYSTEMTIME wYear as word wMonth as word wDayOfWeek as word wDay as word wHour as word wMinute as word wSecond as word wMilliseconds as word end type declare function SystemTimeToFileTime lib "Kernel32.dll" _ alias "SystemTimeToFileTime" (lpSystemTime as SYSTEMTIME, _ lpFileTime as quad) as long declare function FileTimeToSystemTime lib "Kernel32.dll" _ alias "FileTimeToSystemTime" (lpFileTime as quad, _ lpSystemTime as SYSTEMTIME) as long function pbmain () as long local ST as systemtime local FT as quad local hTxt as dword local x as word txt.window("About FILETIME and SYSTEMTIME", 200, 150, 24, 65) to hTxt FT = &h8000000000000000 txt.print " A FileTime of &h8000000000000000 returns:" txt.print FileTimeToSystemTime (FT, ST); " 'zero if error" txt.print txt.print "&h8000000000000000 - 1 = &h7FFFFFFFFFFFFFFF"; FT = &h7FFFFFFFFFFFFFFF txt.print " 'which returns:" txt.print FileTimeToSystemTime (FT, ST); " 'non-zero if success" txt.print "Making it the maximum FileTime. Or," txt.print dec$(ST.wYear, 4); "-"; dec$(ST.wMonth, 2); "-"; txt.print dec$(ST.wDay, 2); "T"; dec$(ST.wHour, 2); ":"; txt.print dec$(ST.wMinute, 2); ":"; dec$(ST.wSecond, 2); "."; txt.print dec$(FT mod 10000000 , 7); "Z"; txt.print " 'ISO 8601 format from SystemTime." txt.print txt.print " "; string$$(63, "=") txt.print txt.print "SystemTimeToFileTime returns as error with that SystemTime." txt.print "The latest SystemTime that does not error is:" txt.print "ST.wYear = 30827" tab(20) txt.print "ST.wMonth = 12" tab(40) txt.print "ST.wDay = 31" txt.print "ST.wHour = 23" tab(20) txt.print "ST.wMinute = 59" tab(40) txt.print "ST.wSecond = 59" txt.print "ST.wmilliseconds = 999" txt.print txt.print "So the maximum SystemTime is in ISO 8601 is:" ST.wYear = 30827 : ST.wMonth = 12 : ST.wDay = 31 ST.wHour = 23 : ST.wMinute = 59 : ST.wSecond = 59 ST.wmilliseconds = 999 txt.print dec$(ST.wYear, 4); "-"; dec$(ST.wMonth, 2); "-"; txt.print dec$(ST.wDay, 2); "T"; dec$(ST.wHour, 2); ":"; txt.print dec$(ST.wMinute, 2); ":"; dec$(ST.wSecond, 2); "."; txt.print dec$(FT mod 10000000 , 7); "Z" txt.print txt.print "Converted to FileTime:" SystemTimeToFileTime (ST, FT) txt.print "&h";hex$(FT, 16) txt.print txt.print "Any key to exit. txt.waitkey$ end function