C ++ chrono epoch小10万倍?

时间:2015-03-12 06:57:10

标签: c++ epoch chrono

以下代码返回的数字如14517044

typedef std::chrono::high_resolution_clock Clock;
typedef std::chrono::milliseconds Milliseconds;
unsigned long res = std::chrono::duration_cast<Milliseconds>(Clock::now().time_since_epoch()).count();
printf("epoch %lu", res);

http://www.epochconverter.com/网站会显示1426143327之类的数字,以秒为单位。那么毫秒的纪元有8个数字,秒的纪元有10个数字?

我的代码有什么问题?

1 个答案:

答案 0 :(得分:3)

注意 - 并非所有计算机都使用相同的日期/时间作为其纪元。无论如何,你的问题是将值截断为32位......它需要更多。

#include <cstdio>
#include <iostream>
#include <chrono>

int main()
{
    typedef std::chrono::high_resolution_clock Clock;
    typedef std::chrono::milliseconds Milliseconds;
    auto res = std::chrono::duration_cast<Milliseconds>(Clock::now().time_since_epoch()).count();
    printf("garbage %lu\n", res);  // garbage
    printf("epoch printf %lld\n", (long long)res);
    std::cout << "epoch cout " << res << '\n';
}

输出:

garbage 202650458
epoch printf 1426131792730
epoch cout 1426131792730

看到它运行here