如何在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)……