11

关于 Qt 的文档QTime::currentTime()说:

注意,准确度取决于底层操作系统的准确度;并非所有系统都提供 1 毫秒的精度。

但是有没有办法在 Windows 7 中以毫秒精度获得这个时间?

4

4 回答 4

10

您可以使用QDateTime类并以适当的格式转换当前时间:

QDateTime::currentDateTime().toString("yyyy/MM/dd hh:mm:ss,zzz")

其中“ z ”对应于毫秒精度。

于 2018-06-12T13:35:50.267 回答
3

您可以使用 C/C++ 中 time.h 头文件提供的功能。

#include <time.h> 
clock_t start, end; 
double cpu_time_used; 
int main()
{
    start = clock();
    /* Do the work. */ 
    end = clock(); 
    cpu_time_used = ((double)(end-start)/ CLOCKS_PER_SEC);
}
于 2015-07-30T20:07:33.940 回答
2

计时器分辨率可能因平台而异,读数可能不准确。如果您需要在 Windows 7 上获得高分辨率、准确的时间戳,它提供了 QPC API:

https://msdn.microsoft.com/en-us/library/windows/desktop/dn553408%28v=vs.85%29.aspx

GetSystemTimePreciseAsFileTime声称提供具有<1us分辨率的系统时间。

但这只是关于准确的时间戳。如果您需要实际执行 1 毫秒延迟的操作(例如处理事件),则需要 RTOS,而不是台式机。

于 2015-07-30T20:22:29.900 回答
0

一种常见的方法是扩大你正在做的任何事情,并连续做 10-100 次,这样你就可以通过将结果除以 10-100 来获得更准确的时间读数。

但是获得毫秒级精确读数几乎没有用,因为您没有 100% 的 CPU 时间,这意味着如果操作系统在您提供另一个进程计算时间时,您的读数将具有比 1 毫秒更大的差异做你的动作。

于 2015-07-30T20:01:52.547 回答