Millisekunden ermitteln
-
Eigentlich nicht@Zeitabstände. Aber wie würde ich das tun?
-
Bzw: Wie wandle ich ein "boost::chrono::steady_clock::duration" in Minuten/Sekunden/Millisekunden um?
-
dsffsd schrieb:
Bzw: Wie wandle ich ein "boost::chrono::steady_clock::duration" in Minuten/Sekunden/Millisekunden um?
sfdfds schrieb:
Eigentlich nicht@Zeitabstände. Aber wie würde ich das tun?
Ja was denn nun? Zeitabstände oder nicht?
Die boost::chrono-Sachen sind direkte Vorbilder für die chrono-Funktionen aus C++11. Benutzung ist daher weitestgehend gleich:
http://en.cppreference.com/w/cpp/chrono/duration
-
dsffsd schrieb:
Bzw: Wie wandle ich ein "boost::chrono::steady_clock::duration" in Minuten/Sekunden/Millisekunden um?
Das ist nur ein Klassentemplate, und auch nicht was du willst.
Was interessant wäre, ist vielleichtchrono::steady_clock::period, denn das gibt an, wieviele Ticks pro Sekunde vergehen. Beihigh_resolution_clocksind das bspw. dann 1000000000 (Eine Milliarde).Aber das ist nicht was du willst.
Ich glaube, du willst einfach die Uhrzeit auf die Millisekunde genau wissen?
-
Für die Refernz:
boost::chrono::steady_clock::duration duration = boost::chrono::high_resolution_clock::now() - start; mFile << " " << std::setw(2) << std::setfill('0') << boost::chrono::duration_cast<boost::chrono::hours>(duration).count() << ":" << std::setw(2) << std::setfill('0') << boost::chrono::duration_cast<boost::chrono::minutes>(duration).count() << ":" << std::setw(2) << std::setfill('0') << boost::chrono::duration_cast<boost::chrono::seconds>(duration).count() << ":" << std::setw(2) << std::setfill('0') << boost::chrono::duration_cast<boost::chrono::milliseconds>(duration).count();
-
Korrektur
<< ":" << std::setw(3) << std::setfill('0') << boost::chrono::duration_cast<boost::chrono::milliseconds>(duration).count() % 1000;
-
So kriegst du schon mal den aktuellen Millisekunden-Stand heraus:
#include <iostream> #include <chrono> int main() { using namespace std::chrono; high_resolution_clock h; std::cout << static_cast<unsigned>((h.now() - system_clock::from_time_t(system_clock::to_time_t(h.now()))).count() * static_cast<float>(1000) / high_resolution_clock::period::den); }Ist also zwischen 0 und 999. Nimmst du dann per
to_time_tdie Sekunden, Minuten, usw. dann hast du alles
-
Danke dir

-
dsffsd schrieb:
Danke dir

Ich mach es übrigens umständlich. Ich seh gleich, ob es nicht einfacher geht (was es bestimmt tut).
-
Ja, so geht es einfacher:
std::cout << static_cast<unsigned>((h.now() - std::chrono::time_point_cast<std::chrono::seconds>(h.now())).count() * static_cast<float>(1000) / high_resolution_clock::period::den);
-
Sone_logoff schrieb:
Ja, so geht es einfacher:
std::cout << static_cast<unsigned>((h.now() - std::chrono::time_point_cast<std::chrono::seconds>(h.now())).count() * static_cast<float>(1000) / high_resolution_clock::period::den);Besser ist vielleicht, die 1000 durch milliseconds::period::den zu ersetzen, ich hab außerdem vergessen, dass ich den Namensraum freigegeben hab', also so:
std::cout << static_cast<unsigned>((h.now() - time_point_cast<seconds>(h.now())).count() * static_cast<float>(milliseconds::period::den) / high_resolution_clock::period::den);