I have created std::chrono::milliseconds ms and std::chrono::nanoseconds ns from std::chrono::system_clock::now().time_since_epoch(). From that duration I created timepoints and convert it to time_t using system_clock::to_time_t and print it using ctime function. But the time printed is not same. As I understand the time_point have duration and duration have rep and period (ratio). So time_point must have same value up to millisecond precision in both time_points. Why the output is different?
Here is my code
#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; }