以下代码返回的数字如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个数字?
我的代码有什么问题?
答案 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