example - Obtenga tiempo desde época en milisegundos, de preferencia usando C++ 11 chrono
date c++ (1)
unsigned long milliseconds_since_epoch =
std::chrono::system_clock::now().time_since_epoch() /
std::chrono::milliseconds(1);
aunque, especialmente dado que desea la independencia de la plataforma, podría ser mejor reemplazar el unsigned long
con un tipo que es más probable que sea lo suficientemente grande:
-
(unsigned) long long
-
std::(u)int64_t
-
std::chrono::milliseconds::rep
-
auto
Para mí, esto indica claramente que estás arriesgando la pérdida de precisión (por analogía con la división de enteros) y que estás dejando la seguridad del sistema de tipos (dividiendo por un tiempo mecanografiado para dar un número sin unidades). Sin embargo, como se demostró en los comentarios, algunas personas dirían que cualquier intento de alejarse de la seguridad de tipo debería ir acompañado de un intento deliberado de hacer que el código parezca peligroso. Si necesita tratar con personas que mantienen esa creencia, podría ser más simple usar duration_cast
lugar de entrar en un argumento sobre elecciones estilísticas irrelevantes:
unsigned long milliseconds_since_epoch =
std::chrono::duration_cast<std::chrono::milliseconds>
(std::chrono::system_clock::now().time_since_epoch()).count();
Todo lo que quiero es obtener el tiempo transcurrido desde época en milisegundos y almacenarlo en un largo sin signo.
Encontré esta pregunta relacionada . Pero, sinceramente, esta no puede ser la forma más fácil de realizar una tarea tan simple, ¿verdad? Estoy esperando algo mucho más simple, pero no puedo encontrar nada en la referencia de std :: chrono . Cualquier consejo es bienvenido. No necesariamente tengo que usar std::chrono
, pero quiero que sea independiente de la plataforma.