> 文章列表 > centos里 C++项目 time() 和 gettimeofday() 返回不同的秒数

centos里 C++项目 time() 和 gettimeofday() 返回不同的秒数

centos里 C++项目 time() 和 gettimeofday() 返回不同的秒数

项目里有个地方获取时间戳需要比较精确,用了 gettimeofday()获取的
很多地方也引用了这里获取时间戳

struct timeval tv;gettimeofday( &tv, NULL );m_usec_time = (utime_t) tv.tv_sec * 1000 * 1000 + tv.tv_usec;m_time = (time_t) tv.tv_sec;

而linux 下一般获取时间戳用time(NULL) 获取的,
实际项目发现 就算 time()后面调用  获取的时间 还是有概率 比gettimeofday获取到的时间晚一秒

这边做定时器时判定是用的 gettimeofday ,但逻辑里设置时间用的是time(NULL) 结果造成定时器出问题了。

查了一下
网上有人也遇到了这个问题,所以一个项目里时间戳接口要统一用一个,不要混用了
关于C#:time()和gettimeofday()返回不同的秒数 | 码农家园
(原文地址:
c - time() and gettimeofday() return different seconds - Stack Overflow)

system_clock::now()和time()时间函数混用带来的踩坑经历_AlbertS的博客-CSDN博客