无法从GetSystemTimeAsFileTime获取正确的FileTime

时间:2015-01-02 13:57:24

标签: c filetime

大家新年快乐。

我有一点问题,我希望得到你的帮助。

我试图获得两个动作之间的时差,而不是由同一个脚本执行。

我决定使用Windows API时间函数。

我的问题是我无法准确地返回时间。

以下是我使用的代码:

SYSTEMTIME* sysTime;
FILETIME fileTime;
long long now_long;

GetSystemTimeAsFileTime(&fileTime);

now_long = ((fileTime.dwHighDateTime) << 32) + fileTime.dwLowDateTime;
printf("Now: %lld \n", now_long);

然后返回

Now: 459348163289354063 

问题在于,根据多个在线转换器,此时间戳代表

Wednesday, August 13, 3056 6:12:09pm

我应该得到更像

的东西
130646801530000000

我已尝试使用中间系统时间,如下所示:

SYSTEMTIME sysTime;
FILETIME fileTime;
long long now_long;

GetLocalTime(&sysTime);
SystemTimeToFileTime(&sysTime, &fileTime);


printf(" Now: %02d:%02d:%02d:%02d:%02d\n", sysTime.wYear, sysTime.wMonth,sysTime.wDay,sysTime.wHour, sysTime.wMinute);

now_long = ((fileTime.dwHighDateTime) << 32) + fileTime.dwLowDateTime;
printf("Now: %lld \n", now_long);

返回

Now: 2015:01:02:14:53
Now: 459348113484523371 

如您所见,SystemTime很好,但FileTime再次不准确。

我一直在努力解决这个问题,我真的不明白为什么会有这样的结果。

提前感谢您的帮助,

0 个答案:

没有答案