time.h 中的时间函数给出了自纪元以来的毫秒数。
Jake
问问题
9841 次
5 回答
7
这是一个简单的方法:
time_t seconds_since_midnight = time(NULL) % 86400;
要获得自午夜以来的大约毫秒数,请乘以seconds_since_midnight
1000。
如果您需要更高的分辨率(考虑您是否真的需要),您将不得不使用另一个功能,例如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 回答