time.h中的时间函数给出了自纪元以来的毫秒数。
答案 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)...