这是一个简单的方法:
time_t seconds_since_midnight = time(NULL) % 86400;
Run Code Online (Sandbox Code Playgroud)
要从午夜开始获得大约毫秒,请乘以seconds_since_midnight1000.
如果你需要更多的分辨率(考虑你是否真的这样做),你将不得不使用另一个功能,如gettimeofday().
这是精确的方式:
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.
但我不知道是否值得付出全部努力.