在Qt中获得毫秒精度的当前时间

Getting milliseconds accuracy current time in Qt

本文关键字:精度 时间 Qt      更新时间:2023-10-16

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

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

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

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

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

其中'z'对应毫秒级精度

可以使用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);
}

计时器分辨率在不同的平台上可能会有所不同,读数可能不准确。如果你需要在Windows 7上获得高分辨率,准确的时间戳,它提供了QPC API:

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

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

但这只是关于准确的时间戳。如果你真的需要在1毫秒的延迟时间内做一些事情(比如处理一个事件),你需要一个实时操作系统,而不是一个桌面的烂货。

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

但是获得毫秒级精确的时间读数几乎是无用的,因为你没有100%的cpu时间,这意味着如果操作系统在你执行操作时给另一个进程计算时间,那么你的读数将有比1毫秒更大的差异。