web-dev-qa-db-fra.com

Temps système chrono C ++ en millisecondes, opérations de temps

J'ai un petit problème causé par une documentation insuffisante de C++ 11.

Je voudrais obtenir un temps depuis Epoch en millisecondes, ou nanosecondes ou secondes et ensuite je devrai "cast" cette valeur à une autre résolution. Je peux le faire en utilisant gettimeofday () mais ce sera trop facile, j'ai donc essayé de le faire en utilisant std :: chrono.

J'ai essayé:

std::chrono::time_point<std::chrono::system_clock> now = 
    std::chrono::system_clock::now();

Mais je n'ai aucune idée de ce qu'est une résolution obtenue de cette façon time_point, et je ne sais pas comment obtenir ce temps comme un simple long non signé, et je n'ai aucune idée de comment le convertir en une autre résolution.

54
Dejwi

Vous pouvez faire now.time_since_Epoch() pour obtenir une durée représentant le temps depuis l'époque, avec la résolution de l'horloge . Pour convertir en millisecondes, utilisez duration_cast :

auto duration = now.time_since_Epoch();
auto millis = std::chrono::duration_cast<std::chrono::milliseconds>(duration).count();
93