大家新年快乐。
我有一点问题,我希望得到你的帮助。
我试图获得两个动作之间的时差,而不是由同一个脚本执行。
我决定使用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再次不准确。
我一直在努力解决这个问题,我真的不明白为什么会有这样的结果。
提前感谢您的帮助,