在Qt中获取毫秒精度的当前时间
Getting milliseconds accuracy current time in Qt
关于 QTime::currentTime()
的 Qt 文档说:
Note that the accuracy depends on the accuracy of the underlying
operating system; not all systems provide 1-millisecond accuracy.
但是有什么方法可以在 windows 7 中以毫秒的精度获得这个时间?
一种常见的方法是扩大你正在做的事情并连续做 10-100 次,这样你就可以通过除以结果来更准确地读取你正在做的事情10-100。
但是获得毫秒级精确时间读数几乎没有用,因为您没有 100% 的 cpu 时间,这意味着如果OS 在您执行操作时给另一个进程计算时间。
您可以在 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 毫秒的延迟执行某些操作(例如处理一个事件),您需要一个 RTOS,而不是桌面设备。
您可以使用 QDateTime
class 并将当前时间转换为适当的格式:
QDateTime::currentDateTime().toString("yyyy/MM/dd hh:mm:ss,zzz")
其中“z”对应毫秒精度。
关于 QTime::currentTime()
的 Qt 文档说:
Note that the accuracy depends on the accuracy of the underlying operating system; not all systems provide 1-millisecond accuracy.
但是有什么方法可以在 windows 7 中以毫秒的精度获得这个时间?
一种常见的方法是扩大你正在做的事情并连续做 10-100 次,这样你就可以通过除以结果来更准确地读取你正在做的事情10-100。
但是获得毫秒级精确时间读数几乎没有用,因为您没有 100% 的 cpu 时间,这意味着如果OS 在您执行操作时给另一个进程计算时间。
您可以在 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 毫秒的延迟执行某些操作(例如处理一个事件),您需要一个 RTOS,而不是桌面设备。
您可以使用 QDateTime
class 并将当前时间转换为适当的格式:
QDateTime::currentDateTime().toString("yyyy/MM/dd hh:mm:ss,zzz")
其中“z”对应毫秒精度。