【问题标题】:Getting time since epoch in milliseconds isn't outputting correctly以毫秒为单位获取自纪元以来的时间未正确输出
【发布时间】:2025-11-23 19:30:01
【问题描述】:

我使用了这个论坛上一个答案中的代码,但它似乎不正确。我不知道这是代码还是我记录它的方式。

unsigned long long int NQCTestInstance::getCurrentTimeInMs() {

    unsigned long milliseconds_since_epoch =
        std::chrono::duration_cast<std::chrono::milliseconds>
        (std::chrono::system_clock::now().time_since_epoch()).count();

    Log("Timestamp = %u\n\n", milliseconds_since_epoch);

    return milliseconds_since_epoch;

}

Log 输出为 119682234,本应为 10 个字符时只有 9 个字符。这是否像 Log 语句中的 %u 不正确一样简单?

【问题讨论】:

  • 试试 %lu........
  • 您的返回类型为unsigned long long,使用unsigned long 类型的变量,并使用适合unsigned int 的格式说明符。考虑在整个过程中使用unsigned long long

标签: c++11 time milliseconds chrono system-clock


【解决方案1】:

@Igor Tandetnik 和@John Zwinck 走在了正确的轨道上。

我将所有内容都更改为unsigned long long,然后使用%llu(不是%lu)进行日志记录。

【讨论】:

    最近更新 更多