time.h中的时间函数返回自纪元以来的毫秒数。
struct timeval tv;
int msec = -1;
if (gettimeofday(&tv, NULL) == 0)
{
msec = ((tv.tv_sec % 86400) * 1000 + tv.tv_usec / 1000);
}
这将会把从午夜开始到现在时间的毫秒数存入msec
。(如果获取时间时发生了错误,则为-1。)
尽管将时间值存储在int
中通常是不好的做法,但我有些粗心,并假设int
至少是32位,可以轻松容纳(-1)到86,400,000的范围。
但我不知道这是否值得所有的努力。
这是一个简单的方法:
time_t seconds_since_midnight = time(NULL) % 86400;
要获取从午夜开始的大致毫秒数,请将seconds_since_midnight
乘以1000。
如果您需要更高的分辨率(请考虑是否真的需要),则必须使用另一个函数,如gettimeofday()
。
看一下 gmtime() 函数,它可以直接转换为协调世界时 (UTC)...