You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

C++ std::chrono高精度时间对比及epoch计数转time_t与格式化输出问题

高精度时间操作问题解答

1. 毫秒/微秒级时间对比实现

直接使用std::chrono库的时间点差值计算即可实现高精度耗时统计,完全不需要依赖秒级的time_t类型:

  • 任务计时优先选择std::chrono::steady_clock,不受系统时间跳变、NTP同步等干扰,计时结果更准确
  • 差值计算后可通过duration_cast指定任意精度(纳秒、微秒、毫秒均可)

示例代码:

#include <chrono>
#include <iostream>

int main() {
    auto start = std::chrono::steady_clock::now();
    // 执行你的任务逻辑
    // ...
    auto end = std::chrono::steady_clock::now();

    // 输出微秒级耗时
    auto cost_us = std::chrono::duration_cast<std::chrono::microseconds>(end - start);
    std::cout << "任务耗时:" << cost_us.count() << " 微秒\n";
    // 输出毫秒级耗时
    auto cost_ms = std::chrono::duration_cast<std::chrono::milliseconds>(end - start);
    std::cout << "任务耗时:" << cost_ms.count() << " 毫秒\n";
    return 0;
}

如果需要输出带高精度的可读时间格式,C++20及以上版本可直接使用std::format("{:%F %T}", tp)直接输出带微秒的时间,低版本可手动拆分秒以下部分拼接输出。

2. uint64_t纪元计数转换为可读时间

std::chrono::system_clock::now().time_since_epoch().count()返回的是时钟原生精度的计数,转换时需要先还原为duration类型再进一步处理:

#include <chrono>
#include <iostream>
#include <ctime>

int main() {
    // 你获取的uint64_t时间计数
    uint64_t current1 = std::chrono::system_clock::now().time_since_epoch().count();
    
    // 转换为system_clock的时间点
    auto tp = std::chrono::system_clock::time_point(std::chrono::system_clock::duration(current1));
    
    // 提取秒级部分转time_t用于格式化输出
    std::time_t t = std::chrono::system_clock::to_time_t(tp);
    // 提取微秒级后缀
    auto us = std::chrono::duration_cast<std::chrono::microseconds>(tp.time_since_epoch()) % 1000000;

    // 拼接输出完整时间
    std::cout << "当前时间:" << std::ctime(&t) << " 微秒:" << us.count() << "\n";
    return 0;
}

注意事项

  • 如果你拿到的uint64_t计数本身是明确指定单位的(比如明确是微秒级纪元偏移),可以直接用std::chrono::microseconds(current1)构造duration,再转time_point即可,不需要适配system_clock的原生精度
  • 不要直接对count返回的uint64_t做除法取整拆分时间,不同平台system_clock的原生精度可能不同(部分平台是100纳秒、部分是纳秒),直接运算会有兼容性问题

内容的提问来源于stack exchange,提问作者learnzz

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.09.29 07:45:04