Obtenez l'heure système en millisecondes au début, puis à nouveau à la fin, et soustrayez.
Pour obtenir le nombre de millisecondes depuis 1970 dans POSIX, vous écrirez:
struct timeval tv;
gettimeofday(&tv, NULL);
return ((((unsigned long long)tv.tv_sec) * 1000) +
(((unsigned long long)tv.tv_usec) / 1000));
Pour obtenir le nombre de millisecondes depuis 1601 sous Windows, vous écririez:
SYSTEMTIME systime;
FILETIME filetime;
GetSystemTime(&systime);
if (!SystemTimeToFileTime(&systime, &filetime))
return 0;
unsigned long long ns_since_1601;
ULARGE_INTEGER* ptr = (ULARGE_INTEGER*)&ns_since_1601;
// copy the result into the ULARGE_INTEGER; this is actually
// copying the result into the ns_since_1601 unsigned long long.
ptr->u.LowPart = filetime.dwLowDateTime;
ptr->u.HighPart = filetime.dwHighDateTime;
// Compute the number of milliseconds since 1601; we have to
// divide by 10,000, since the current value is the number of 100ns
// intervals since 1601, not ms.
return (ns_since_1601 / 10000);
Si vous vouliez normaliser la réponse Windows afin qu'elle renvoie également le nombre de millisecondes depuis 1970, vous devrez alors ajuster votre réponse de 11644473600000 millisecondes. Mais ce n'est pas nécessaire si vous vous souciez uniquement du temps écoulé.