C++Guns – RoboBlog

11.02.2018

C++ Guns: std::chrono::duration to nice human readable text

Filed under: Allgemein — Tags: — Thomas @ 13:02

std::chrono::duration stellt eine Zeitspanne dar. Zum Beispiel wie lange ein Programm schon läuft. Eine Textausgabe in Sekunde, Minuten, Stunden u.s.w wäre also schön. Die Umrechnung von std::chrono::duration nach Stunden ist super einfach.
Die Hauptarbeit übernimmt std::chrono::duration_cast und vordefinierte Werte für Sekunden, Minunten und Stunden gibt es schon. Die Erweiterung für Tage ist entsprechend einfach.

void nicedateTime(std::chrono::duration<double> dur) {
  typedef std::chrono::duration<int64_t, std::ratio<24*3600>> day;

  auto days = std::chrono::duration_cast<day>(dur);
  dur -= days;
  std::cout << days.count() << "d ";

  auto HH = std::chrono::duration_cast<std::chrono::hours>(dur);
  dur -= HH;
  std::cout << HH.count() << "h ";

  auto min = std::chrono::duration_cast<std::chrono::minutes>(dur);
  dur -= min;
  std::cout << min.count() << "m ";

  auto sec = std::chrono::duration_cast<std::chrono::seconds>(dur);
  std::cout << sec.count() << "s ";
}

No Comments

No comments yet.

RSS feed for comments on this post.

Sorry, the comment form is closed at this time.

Powered by WordPress