boost: Aktuelle Minuten/Sekunden/Stunden
-
Wieso liefert folgendes das aktuelle Datum:
boost::gregorian::date d = boost::gregorian::day_clock::universal_day(); d.year() d.month() d.day()Und folgendes nicht die aktuelle Zeit:
boost::posix_time::ptime t = boost::posix_time::second_clock::universal_time(); // Folgende Methoden existieren nicht t.hours() t.minutes() t.seconds();Ja wie komme ich denn jetzt an die aktuellen Minuten Sekunden und Stunden. Selbst meine professionellen google-Kenntnisse bringen mich kein Stück weiter, nein die Doku ist keine Hilfe

-
N-E-R-V schrieb:
nein die Doku ist keine Hilfe

Das ist doof...
Was ich jetzt dieser unnützen Dokumentation entnommen habe ist, dass ich mir die Funktionalität ziemlich lapidar selber schreiben kann.
int hour(const boost::posix_time::ptime& pt){ return to_tm(pt).tm_hour; } int min(const boost::posix_time::ptime& pt){ return to_tm(pt).tm_min; } int sec(const boost::posix_time::ptime& pt){ return to_tm(pt).tm_sec; }
-
Ohne es zu überprüfen, sollte Folgendes funktionieren (hab ich aus altem Code von mir geklaut):
posix_time::ptime foo = ...; gregorian::date datePart = foo.date(); posix_time::time_duration timePart = foo.time_of_day(); auto year = datePart.year(); auto month = datePart.month(); auto day = datePart.day(); auto hours = timePart.hours(); auto minutes = timePart.minutes(); auto seconds = timePart.seconds();
-
Ich habe das bei mir so gemacht (in einem namespace):
boost::posix_time::ptime now() { return boost::posix_time::second_clock::universal_time(); } //... std::cout << now().date() << " oder: " << now().time_of_day();wobei die beiden letzten Funktionen nach Bedarf in einzelne Elemente zerlegt werden können. Ich stimme dir voll und ganz zu, dass die Doku und die Anwendung anfangs nicht einfach zu knacken ist. Man muss sich erstmal durch 10 Namensräume durchbeißen, um an so etwas einfaches wie die lokale Zeit oder Zeitdifferenz in Milisekunden zu kommen
.