Puede usar boost::posix_time::time_duration
para obtener el rango de tiempo. Por ejemplo,
boost::posix_time::time_duration diff = tick - now;
diff.total_milliseconds();
Y para obtener una mayor resolución, puede cambiar el reloj que está utilizando. Por ejemplo, al boost::posix_time::microsec_clock
, aunque esto puede depender del sistema operativo. En Windows, por ejemplo, boost::posix_time::microsecond_clock
tiene una resolución de milisegundos, no de microsegundos.
Un ejemplo que depende un poco del hardware.
int main(int argc, char* argv[])
{
boost::posix_time::ptime t1 = boost::posix_time::second_clock::local_time();
boost::this_thread::sleep(boost::posix_time::millisec(500));
boost::posix_time::ptime t2 = boost::posix_time::second_clock::local_time();
boost::posix_time::time_duration diff = t2 - t1;
std::cout << diff.total_milliseconds() << std::endl;
boost::posix_time::ptime mst1 = boost::posix_time::microsec_clock::local_time();
boost::this_thread::sleep(boost::posix_time::millisec(500));
boost::posix_time::ptime mst2 = boost::posix_time::microsec_clock::local_time();
boost::posix_time::time_duration msdiff = mst2 - mst1;
std::cout << msdiff.total_milliseconds() << std::endl;
return 0;
}
En mi máquina win7. La primera salida es 0 o 1000. Segunda resolución. El segundo es casi siempre 500, debido a la mayor resolución del reloj. Espero que ayudes un poco.
Qué quiere decir una marca de tiempo época? – Nim
"pero después necesito tener un valor largo de los milisegundos del ahora". ....¿qué? –