fork(1) download
  1. #include <chrono>
  2. #include <iostream>
  3. #include <ctime>
  4.  
  5. std::chrono::system_clock::duration duration_since_midnight() {
  6. auto now = std::chrono::system_clock::now();
  7.  
  8. time_t tnow = std::chrono::system_clock::to_time_t(now);
  9. tm *date = std::localtime(&tnow);
  10. date->tm_hour = 0;
  11. date->tm_min = 0;
  12. date->tm_sec = 0;
  13. auto midnight = std::chrono::system_clock::from_time_t(std::mktime(date));
  14.  
  15. return now-midnight;
  16. }
  17.  
  18. int main()
  19. {
  20. auto since_midnight = duration_since_midnight();
  21.  
  22. auto hours = std::chrono::duration_cast<std::chrono::hours>(since_midnight);
  23. auto minutes = std::chrono::duration_cast<std::chrono::minutes>(since_midnight - hours);
  24. auto seconds = std::chrono::duration_cast<std::chrono::seconds>(since_midnight - hours - minutes);
  25. auto milliseconds = std::chrono::duration_cast<std::chrono::milliseconds>(since_midnight - hours - minutes - seconds);
  26. auto microseconds = std::chrono::duration_cast<std::chrono::microseconds>(since_midnight - hours - minutes - seconds - milliseconds);
  27. auto nanoseconds = std::chrono::duration_cast<std::chrono::nanoseconds>(since_midnight - hours - minutes - seconds - milliseconds - microseconds);
  28.  
  29. std::cout << hours.count() << "h ";
  30. std::cout << minutes.count() << "m ";
  31. std::cout << seconds.count() << "s ";
  32. std::cout << milliseconds.count() << "ms ";
  33. std::cout << microseconds.count() << "us ";
  34. std::cout << nanoseconds.count() << "ns\n";
  35. }
Success #stdin #stdout 0s 3016KB
stdin
Standard input is empty
stdout
8h 50m 49s 639ms 713us 0ns