C++用time()计算时间差为何仅返回整秒,没有毫秒部分?
原因说明
你调用的time()函数在标准实现中返回的time_t类型精度仅为秒级,仅记录从Unix纪元(1970-01-01 00:00:00 UTC)到当前时间的整秒计数,本身就不包含毫秒、微秒这类更小单位的时间信息。
- 你调用的
sleep(1)会让进程至少挂起1秒,实际挂起时长通常略大于1秒,但因为前后两次time()调用取到的都是整秒值,差值自然是规整的1。 - 如果需要获取更高精度的时间差,可以使用C++11起提供的
<chrono>标准库的高精度时钟,示例实现如下:
#include <iostream> #include <chrono> #include <unistd.h> int main() { auto start = std::chrono::high_resolution_clock::now(); sleep(1); auto end = std::chrono::high_resolution_clock::now(); // 转成毫秒单位输出 auto diff = std::chrono::duration_cast<std::chrono::milliseconds>(end - start); std::cout << diff.count() << std::endl; return 0; }
- 上述代码运行后输出结果通常略大于1000,可以体现出更高精度的时间差。
内容的提问来源于stack exchange,提问作者user16468058
相关产品推荐
相关产品推荐

