7

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

4

5 回答 5

7

这是一个简单的方法:

time_t seconds_since_midnight = time(NULL) % 86400;

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

如果您需要更高的分辨率(考虑您是否真的需要),您将不得不使用另一个功能,例如gettimeofday().

于 2009-07-02T04:34:03.067 回答
7

这是精确的方法:

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 的范围。

但我不知道这是否值得所有的努力。

于 2012-05-08T13:00:21.160 回答
5

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

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

于 2009-07-02T04:26:27.060 回答
0

您将在此处找到用于C获取时间并将其转换为各种格式的代码示例。

于 2009-07-02T04:31:04.907 回答
0

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

于 2009-07-02T04:56:23.093 回答