Windows中有FILETIME这个时间类型,在VS上F12进去以后如下:
typedef struct _FILETIME {
DWORD dwLowDateTime;
DWORD dwHighDateTime;
} FILETIME, *PFILETIME, *LPFILETIME;
那么,dwLowDateTime 和 dwHighDateTime 分别是什么意思呢?
这里我贴上StackOverflow上的搜索结果:
意思就是在早期的编译器是不支持64位这个类型的,而dwLowDateTime 和 dwHighDateTime的值又超过了32位所能表示的范围,因此只能拆成两部分来保存。
因此经常可以看到将dwLowDateTime 和 dwHighDateTime合并起来成为一个 uint64_t 类型的代码,比如下面两个就是我见过的(代码省略了一些东西,明白意思就好):
ll = ft.dwHighDateTime << 32 + ft.dwLowDateTime;
uint64_t a = ((uint64_t)time1.dwHighDateTime) << 32 | time1.dwLowDateTime;
顺便提一下:FILETIME的值表示自1601年1月1日开始的100纳秒为单位的时间(摘自百度百科)
1秒 = 1000毫秒
1毫秒 = 1000微秒
1微秒 = 1000纳秒