在C语言中获取本地时间的毫秒数(不使用Boost!)

3
我们如何在没有Boost的情况下获取带毫秒的本地时间? 我有以下代码:
time_of_day = time(NULL);

time_str_tm = localtime(&time_of_day);

printf("\n%02i:%02i:%02i\n", time_str_tm->tm_hour, time_str_tm->tm_min, time_str_tm->tm_sec);

但是tm结构体只有秒钟的信息...

有什么建议吗?

1个回答

3
你需要使用gettimeofday(2)函数。
struct timeval time_now;
gettimeofday(&time_now, NULL);
time_str_tm = gmtime(&time_now.tv_sec);

printf("\n%02i:%02i:%02i:%06i\n"
   , time_str_tm->tm_hour
   , time_str_tm->tm_min
   , time_str_tm->tm_sec
   , time_now.tv_usec);

我不知道有任何标准的方式。gettimeofday 在 4.3BSD 和 POSIX.1-2001 中都已经标准化,所以我怀疑为什么你的导师不想让你使用它。 - Sergey L.
顺便说一下,tv_usec 是微秒而不是毫秒。我应该将 tv_usec 除以一百万吗? - Ksenia
@Ksenia 是的,如果您不需要额外的精度,只需将其除以1000即可 :) - Sergey L.
localtimegmtime之间有什么区别? - Ksenia
1
你比我的导师好多了 :) 非常感谢!你的代码正如我所需。 - Ksenia
显示剩余2条评论

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接