static int SystemTimeToUnixTime()

in src/win32/dt_win32.c [493:507]


static int SystemTimeToUnixTime(SYSTEMTIME *systemTime, time_t *dosTime)
{
    LARGE_INTEGER jan1970FT = {0};
    LARGE_INTEGER utcFT = {0};
    UINT64 utcDosTime = 0;
    jan1970FT.QuadPart = 116444736000000000; // january 1st 1970


    if (SystemTimeToFileTime(systemTime, (FILETIME *)&utcFT) == FALSE) {
        return EXIT_FAILURE;
    }
    utcDosTime = (utcFT.QuadPart - jan1970FT.QuadPart) / 10000000;
    *dosTime = (time_t)utcDosTime;
    return EXIT_SUCCESS;
}