windows 如何获得当前系统时间,精确到微秒

2025-04-08 21:23:37
推荐回答(1个)
回答1:

在调试、日志输出、代码优化时,我们常常需要获得系统的时间。在一些性能要求高的代码优化时,对时间的精确度还比较高。在网上找不高质量的代码,便自己研究了一下,代码如下(能满足跨平台的要求,单位精确到微秒):
#ifdef _WIN32#include #else#include #endif  // _WIND32// 定义64位整形#if defined(_WIN32) && !defined(CYGWIN)
typedef __int64 int64_t;#else
typedef long long int64t;#endif  // _WIN32// 获取系统的当前时间,单位微秒(us)
int64_t GetSysTimeMicros()
{#ifdef _WIN32// 从1601年1月1日0:0:0:000到1970年1月1日0:0:0:000的时间(单位100ns)#define EPOCHFILETIME   (116444736000000000UL)    FILETIME ft;    LARGE_INTEGER li;
    int64_t tt = 0;
    GetSystemTimeAsFileTime(&ft);
    li.LowPart = ft.dwLowDateTime;
    li.HighPart = ft.dwHighDateTime;    // 从1970年1月1日0:0:0:000到现在的微秒数(UTC时间)
    tt = (li.QuadPart - EPOCHFILETIME) /10;    return tt;#else
    timeval tv;
    gettimeofday(&tv, 0);    return (int64_t)tv.tv_sec * 1000000 + (int64_t)tv.tv_usec;#endif // _WIN32    return 0;
}