【发布时间】:2018-07-26 21:04:16
【问题描述】:
我创建了std::chrono::milliseconds ms 和std::chrono::nanoseconds ns
来自std::chrono::system_clock::now().time_since_epoch()。从那段时间开始,我创建了 timepoints 并使用 system_clock::to_time_t 将其转换为 time_t 并使用 ctime 函数打印它。但是打印的时间不一样。据我了解,time_point 有持续时间,持续时间有代表和周期(比率)。因此 time_point 在两个 time_points 中必须具有相同的值,直到毫秒精度。为什么输出不一样?
这是我的代码
#include <ctime>
#include <ratio>
#include <chrono>
#include <iostream>
using namespace std::chrono;
int main ()
{
std::chrono::milliseconds ms = std::chrono::duration_cast < std::chrono::milliseconds > (std::chrono::system_clock::now().time_since_epoch());
std::chrono::nanoseconds ns = std::chrono::duration_cast< std::chrono::nanoseconds > (std::chrono::system_clock::now().time_since_epoch());
std::chrono::duration<unsigned int,std::ratio<1,1000>> today_day (ms.count());
std::chrono::duration<system_clock::duration::rep,system_clock::duration::period> same_day(ns.count());
system_clock::time_point abc(today_day);
system_clock::time_point abc1(same_day);
std::time_t tt;
tt = system_clock::to_time_t ( abc );
std::cout << "today is: " << ctime(&tt);
tt = system_clock::to_time_t ( abc1 );
std::cout << "today is: " << ctime(&tt);
return 0;
}
【问题讨论】: