Chrono
Durations
  1. #include <iostream>
  2. #include <chrono>
  3.  
  4. int main(int argc, char *argv[])
  5. {
  6. //milliseconds
  7. //std::chrono::milliseconds m(10);
  8. //std::cout<<std::chrono::milliseconds::period::num<<std::endl;//1
  9. //std::cout<<std::chrono::milliseconds::period::den<<std::endl;/1000
  10.  
  11. typedef std::chrono::duration<int, std::ratio<1, 1>> seconds_t;
  12. typedef std::chrono::duration<int, std::milli> millis_t;
  13. typedef std::chrono::duration<int, std::ratio<3600, 1>> hours_t;
  14.  
  15. hours_t h(24);//24 hours
  16. seconds_t s(3600*24);//3600*24 seconds
  17. millis_t m(s);//3600*24*1000 ms
  18.  
  19. std::cout<<"One day is "<<h.count()<<" hours"<<std::endl;
  20. std::cout<<"One day is "<<s.count()<<" seconds"<<std::endl;
  21. std::cout<<"One day is "<<m.count()<<" milliseconds"<<std::endl;
  22.  
  23. return 0;
  24. }
  1. #include <iostream>
  2. #include <chrono>
  3.  
  4. int main(int argc, char *argv[])
  5. {
  6. auto t1 = std::chrono::steady_clock::now();
  7. std::cout<<"Interval between two time points ..."<<std::endl;
  8. auto t2 = std::chrono::steady_clock::now();
  9.  
  10. auto d = t2 - t1;
  11.  
  12. if(d == std::chrono::steady_clock::duration::zero())
  13. {
  14. std::cout<<"The internal clock did not tick ..."<<std::endl;
  15. }
  16.  
  17. std::cout<<d.count()<<std::endl;
  18.  
  19. return 0;
  20. }
Time Points
  1. #include <iostream>
  2. #include <chrono>
  3.  
  4. int main(int argc, char *argv[])
  5. {
  6. std::chrono::system_clock::time_point tp = std::chrono::system_clock::now();
  7. std::chrono::system_clock::duration dtn = tp.time_since_epoch();
  8.  
  9. std::cout<<"Current time since epoch: "<<dtn.count()<<" microseconds ..."<<std::endl;
  10.  
  11. return 0;
  12. }
  1. #include <iostream>
  2. #include <chrono>
  3. #include <ctime>
  4.  
  5. int main(int argc, char *argv[])
  6. {
  7. std::chrono::system_clock::time_point tp = std::chrono::system_clock::now();
  8. std::time_t tt = std::chrono::system_clock::to_time_t(tp);//convert time point to time
  9. std::cout<<"Time: "<<ctime(&tt)<<std::endl;
  10.  
  11. return 0;
  12. }
System_clock
  1. #include <iostream>
  2. #include <chrono>
  3. #include <ctime>
  4.  
  5. int main(int argc, char *argv[])
  6. {
  7. if(std::chrono::system_clock::is_steady)
  8. std::cout<<"Steady ..."<<std::endl;
  9. else
  10. std::cout<<"System time is not steady ..."<<std::endl;
  11.  
  12. //now and to_time_t
  13. auto t = std::chrono::system_clock::now();
  14. auto tt = std::chrono::system_clock::to_time_t(t);
  15. std::cout<<"Time: "<<ctime(&tt)<<std::endl;
  16.  
  17. //from_time_t
  18. time_t tt2;
  19. time(&tt2);
  20. std::cout<<"Time: "<<ctime(&tt2)<<std::endl;
  21. auto t2 = std::chrono::system_clock::from_time_t(tt2);
  22.  
  23. auto d = std::chrono::system_clock::now() - t;
  24. std::cout<<"Count: "<<d.count()<<std::endl;
  25. std::cout<<decltype(d)::period::den<<std::endl;
  26.  
  27. return 0;
  28. }
Steady_clock
  1. #include <iostream>
  2. #include <chrono>
  3. #include <ctime>
  4.  
  5. int main(int argc, char *argv[])
  6. {
  7. //now
  8. auto t = std::chrono::steady_clock::now();
  9.  
  10. for(int i = 0; i < 100; i++)
  11. std::cout<<"*"<<" ";
  12. std::cout<<std::endl;
  13.  
  14. auto d = std::chrono::steady_clock::now() - t;
  15. std::cout<<"Count: "<<d.count()<<std::endl;
  16. std::cout<<decltype(d)::period::den<<std::endl;
  17.  
  18. return 0;
  19. }
Reference