在Windows平台上使用ansi-c我可以获得系统时间精确​​到毫秒级吗?

时间:2010-06-29 06:15:21

标签: c windows c89

我需要获得毫秒级的精确度我会看一下this question,但我正在研究Windows:它为POSIX函数提供链接错误。

如果我能以1970毫秒的精度获得UTC时间,那将是非常好的。

3 个答案:

答案 0 :(得分:3)

不在ANSI C中,但Windows API提供了GetSystemTime功能,如下所示:http://msdn.microsoft.com/en-us/library/ms724950(v=VS.85).aspx

答案 1 :(得分:1)

很抱歉,但不能同时使用ANSI C和Windows API。

使用GetSystemTime或使用GetSystemTimeAsFileTime以100纳秒的分辨率 可以<毫秒分辨率获取系统时间,但 >准确度不会那么好。系统时间仅在每个时钟间隔更新,大约10-15毫秒,具体取决于底层架构(SMP,单处理器......)。

有一些方法可以使用不同复杂度的算法来推断系统时间,但如果没有操作系统的支持,您将无法保证正确的高分辨率时钟时间。

答案 2 :(得分:0)

在windows api中有一个SYSTEMTIME结构和一些sys调用来获取你机器的系统时间和本地时间,你可以用这种方式实现它:

SYSTEMTIME systime;

GetSystemTime(安培; SYSTIME);

unsigned int millisec = systime.wMilliseconds;