C++ 计时纪元小 100000 倍?
C++ chrono epoch is 100000 times smaller?
下面的代码 returns 数字如 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位?
我的代码有什么问题?
注意 - 并非所有计算机都使用相同的 date/time 作为它们的纪元。无论如何,你的问题是 t运行 将值转换为 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
下面的代码 returns 数字如 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位?
我的代码有什么问题?
注意 - 并非所有计算机都使用相同的 date/time 作为它们的纪元。无论如何,你的问题是 t运行 将值转换为 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