【问题标题】:C milliseconds since midnight [duplicate]自午夜以来的 C 毫秒 [重复]
【发布时间】:2011-05-15 01:12:21
【问题描述】:

可能重复:
How do I get milliseconds since midnight UTC in C?

我试图获取从当天开始(12:00:00.0000 AM)到当前时间之间经过的时间(以毫秒为单位)。我会在 time.h 中使用什么来实现这一点?

【问题讨论】:

  • 为什么要这样做?您是否真的需要当前的一天中的时间来解决这个问题,或者您只是在计时?在 C 语言中没有一种标准方法可以准确地获取一天中的时间。
  • 我正在尝试编写一个精确的十进制时钟,如果我根据秒数对其进行编程,它会时不时地跳过,如下所示:minkukel.com/en/time/metric_clock.htm

标签: c time.h


【解决方案1】:

如果您指的是自纪元以来的一天中的时间:

struct timeval time;
gettimeofday(&time, NULL);

如果你指的是系统时间:

time_t t;
time(&t);

【讨论】:

  • gettimeofday 是 Posix 而不是 std C,可能可用也可能不可用。它不在 time.h 中(至少不在我的系统上)。 time 类似,但通常为一秒分辨率,因此用处不大。
【解决方案2】:

虽然我知道您要求的是毫秒,但您可以通过以下方式在几秒钟内得到它:

time(NULL)%(24*60*60)

【讨论】:

    【解决方案3】:

    How do I get milliseconds since midnight UTC in C?

    这是一个简单的方法:

    time_t seconds_since_midnight = time(NULL) % 86400;
    

    获得大约毫秒数 午夜,相乘 seconds_since_midnight 1000。

    如果您需要更高的分辨率(考虑 无论你是否真的这样做),你都会有 使用其他功能,例如 gettimeofday().

    【讨论】:

      猜你喜欢
      • 2018-03-11
      • 2012-06-23
      • 1970-01-01
      • 1970-01-01
      • 2010-11-07
      • 1970-01-01
      • 2012-06-12
      • 1970-01-01
      相关资源
      最近更新 更多