如何在C中午夜以来获得毫秒?
time.h中的时间函数给出了自纪元以来的毫秒数。
这是精确的方式:
struct timeval tv; int msec = -1; if (gettimeofday(&tv, NULL) == 0) { msec = ((tv.tv_sec % 86400) * 1000 + tv.tv_usec / 1000); }
这将以msec
为单位存储自午夜以来的msec
数。 (如果获得时间错误,则返回-1。)
虽然将时间值存储在int
通常是一个坏主意,但我有点骑士并假设int
至少为32位,并且可以轻松容纳范围(-1)到86,400,000。
但我不知道是否值得付出全部努力。
这是一种简单的方法:
time_t seconds_since_midnight = time(NULL) % 86400;
要获得自午夜以来的大约毫秒数, seconds_since_midnight
乘以1000。
如果你需要更多的分辨率(考虑你是否真的这样做),你将不得不使用另一个函数,如gettimeofday()
。
您使用在POSIX.1和BSD中定义的gettimeofday(2)。
它返回sys / time.h中struct timeval中定义的秒和微秒。
您将找到C
代码示例,以获取时间并将其转换为各种格式。
看看gmtime()直接转换为协调世界时(UTC)……