如何在C中午夜以来获得毫秒?

7 c time.h

time.h中的时间函数给出了自纪元以来的毫秒数.

Gre*_*ill 7

这是一个简单的方法:

time_t seconds_since_midnight = time(NULL) % 86400;
Run Code Online (Sandbox Code Playgroud)

要从午夜开始获得大约毫秒,请乘以seconds_since_midnight1000.

如果你需要更多的分辨率(考虑你是否真的这样做),你将不得不使用另一个功能,如gettimeofday().


Sha*_*mer 7

这是精确的方式:

struct timeval tv;
int msec = -1;
if (gettimeofday(&tv, NULL) == 0)
{
    msec = ((tv.tv_sec % 86400) * 1000 + tv.tv_usec / 1000);
}
Run Code Online (Sandbox Code Playgroud)

这将存储到msec午夜以来的毫秒数.(如果获得时间错误,则返回-1.)

虽然将时间值存储在a中通常是一个坏主意int,但我有点骑士并且假设int至少是32位,并且可以轻松容纳范围(-1)到86,400,000.

但我不知道是否值得付出全部努力.


cas*_*key 5

您使用在POSIX.1和BSD中定义的gettimeofday(2).

它返回sys/time.h中struct timeval中定义的秒和微秒.