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

14

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

请注意,精度取决于基础操作系统的精度,不是所有系统都提供1毫秒的精度。

但在Windows 7中有没有办法以毫秒精度获取此时间?


这是您要找的吗?https://dev59.com/zm865IYBdhLWcg3wnP2a - Donald
4个回答

15

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

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

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


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);
}

哦...没关系。我以为你是在寻找C/C++方面的内容。 - Anurag Singh

2
计时器分辨率可能因平台而异,读数可能不准确。如果您需要在Windows 7上获取高分辨率、准确的时间戳,则可以使用QPC API。 https://msdn.microsoft.com/en-us/library/windows/desktop/dn553408%28v=vs.85%29.aspx 据称GetSystemTimePreciseAsFileTime可提供小于1微秒的系统时间分辨率。
但这只是关于准确时间戳的问题。如果您需要实际处理1毫秒延迟(例如处理事件),则需要一个实时操作系统(RTOS),而不是桌面计算机。

0
一种常见的方法是将您正在做的事情放大10-100倍并连续执行,这样您就能够通过将结果除以10-100来获得更准确的时间读数。
但是,获得毫秒级精确度的时间读数几乎是无用的,因为您没有100%的CPU时间,这意味着如果操作系统在您执行操作时给另一个进程计算时间,则读数的差异会比1毫秒大得多。

感谢您的回复,但这不是同步操作,我需要计算我的数据之间1毫秒的精确时间,并且我认为毫秒级时间精度不需要占用CPU的100%时间。一定有办法。 - HMD
@ATN 请记住,数据到达和您的进程被通知其到达之间的延迟将是随机的,在糟糕的情况下可能达到数百毫秒。无论您获得什么时间数据,都必须使用适当的误差模型进行统计处理。 - Kuba hasn't forgotten Monica

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接