【问题标题】:using ansi-c on windows platform can i get time of system upto milliseconds accuracy?在 Windows 平台上使用 ansi-c 可以获得高达毫秒精度的系统时间吗?
【发布时间】:2010-06-29 06:15:21
【问题描述】:

我需要在this question 上获得毫秒精度,但我正在使用 Windows:它会为 POSIX 函数提供链接错误。

如果我能以毫秒精度获得 1970 年以来的 UTC 时间,那就太好了。

【问题讨论】:

  • 这是一个非常好的问题。您应该将答案限制为仅使用 ANSI-C 或 Windows API 在 unix 纪元中提供至少毫秒的分辨率。

标签: c windows c89


【解决方案1】:

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

【讨论】:

    【解决方案2】:

    抱歉,您不能使用 ANSI C 或 Windows API 来做到这一点。

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

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

    【讨论】:

      【解决方案3】:

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

      SYSTEMTIME 系统时间;

      GetSystemTime(&systime);

      无符号整数毫秒 = systime.wMilliseconds;

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2013-08-02
        • 2014-09-11
        • 1970-01-01
        • 2016-06-22
        • 2011-04-13
        相关资源
        最近更新 更多