微秒和毫秒的转换和比较

时间:2010-02-16 17:11:22

标签: c++ time 64-bit

如何将微秒转换为毫秒,并且可以通过减法比较时间戳? 例如:

int t1 = (int)timeGetTime();    
int t2 = (int)timeGetTime()+40;
// now t1 - t2 < 0 which means that t1 < t2.

如果将时间值除以1000,则将此逻辑无效,将微秒转换为毫秒。

修改

我想唯一的解决方案是以微秒为单位存储所有时间戳。转换为毫秒只能在减法后进行到delta值。

3 个答案:

答案 0 :(得分:1)

为什么不将millisec值乘以1000,以便以微秒为单位进行比较?或者,使用浮点数代替。

答案 1 :(得分:1)

Windows中时钟定时器的分辨率限制在10毫秒左右,因此您永远无法获得精确到微秒的时间值。

如果您的时间值来自能够达到该分辨率的其他位置,则将值设为微秒。乘以1000或将int除以1000将无法提供更好的分辨率,只会改变比较的比例。

答案 2 :(得分:0)

您需要使用高分辨率计时器才能获得微秒粒度时间。

您可以使用Windows API来检查它的细化程度。

QueryPerformanceFrequency的(安培;的TicksPerSecond); QueryPerformanceCounter的(安培;蜱);

这两个功能将帮助您实现这一目标。请查看MSDN articles了解更多信息。 :)