Wie man die Zeit in Millisekunden in C++
In Java können Sie dies tun:
long now = (new Date()).getTime();
Wie kann ich das gleiche tun, aber in C++?
- Überprüfen Sie diesen thread (es ist Nanosekunden, aber ich denke es könnte umgewandelt werden in Millisekunden als gut) stackoverflow.com/questions/275004/...
- In Java Sie verwenden sollten
System.currentTimeMillis()
.
Du musst angemeldet sein, um einen Kommentar abzugeben.
Gibt es keine solche Methode, die in standard-C++ (in standard C++, es gibt nur second-Genauigkeit, nicht Millisekunden). Sie können es in nicht Tragbarer Weise, aber da Sie nicht angegeben haben, gehe ich davon aus, Sie möchten eine portable Lösung. Ihre beste Wette ist, würde ich sagen, ist die boost-Funktion microsec_clock::local_time().
boost::datetime
ist wirklich toll.Weil C++0x ist genial
Dies funktioniert mit gcc-4.4+. Kompilieren Sie es mit
--std=c++0x
. Ich weiß nicht, ob VS2010 implementiertstd::chrono
noch.Sat, 11 Nov 47426 02:25:18 GMT
. Warum ist das passiert?Ich gerne eine Funktion, die aufgerufen wird
time_ms
so definiert:Der Implementierung unten, sollte in Windows als auch für Unix-wie Systeme.
Beachten Sie, dass die Zeit zurückgegeben, die von der Windows-Zweig ist in Millisekunden seit das system gestartet, während die Zeit zurückgegeben, die von den Unix-Zweig ist in Millisekunden seit 1970. Also, wenn Sie diesen code verwenden, nur verlassen sich auf Unterschiede zwischen den Zeiten, nicht die absolute Zeit selbst.
GetSystemTimeAsFileTime
auf Windows (msdn.microsoft.com/en-us/library/ms724397%28v=VS.85%29.aspx). Persönlich mag ichmicrosec_clock::local_time()
- all die harte Arbeit ist bereits erledigt 🙂time_ms
Prototyp zu?Können Sie versuchen, diesen code (erhalten Sie von Stockfisch Schach-engine, source-code (GPL)):
Standard-C++ nicht über eine Zeit-Funktion mit subsecond Präzision.
Jedoch fast jedes Betriebssystem unterstützt. Also müssen Sie code schreiben, der ist OS-abhängig.
Win32:
GetSystemTime()
GetSystemTimeAsFileTime()
Unix/POSIX:
gettimeofday()
clock_gettime()
Boost hat eine nützliche Bibliothek, dies zu tun:
http://www.boost.org/doc/libs/1_43_0/doc/html/date_time.html
ptime microsec_clock::local_time() oder ptime second_clock::local_time()
Java:
c++: