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

时间:2009-07-02 04:15:42

标签: c time.h

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

5 个答案:

答案 0 :(得分:8)

这是确切的方法:

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。

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

答案 1 :(得分:7)

这是一种简单的方法:

time_t seconds_since_midnight = time(NULL) % 86400;

要获得自午夜以来的大约毫秒数,请将seconds_since_midnight乘以1000。

如果您需要更多分辨率(考虑您是否真的这样做),则必须使用其他功能,例如gettimeofday()

答案 2 :(得分:5)

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

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

答案 3 :(得分:0)

您会找到C代码示例来获取时间并将其转换为各种格式here

答案 4 :(得分:0)

看看gmtime()直接转换为协调世界时(UTC)...