¿Cómo calculo, como un número entero, el número de milisegundos entre ahora y la vez anterior que recordé como ahora?
¿Hay alguna razón por la que lo necesite como una cantidad integral de milisegundos? Solicitar NSDate por el intervalo de tiempo desde otra fecha le dará una cantidad de segundos en coma flotante. Si realmente necesita milisegundos, simplemente puede multiplicar por 1000 por 1000 para obtener un número de coma flotante de milisegundos. Si realmente necesita un número entero, puede redondear o truncar el valor de coma flotante.
Si desea hacerlo con números enteros de principio a fin, utilice uno o UpTime
mach_absolute_time
para obtener la hora actual en unidades absolutas, a continuación, utilizar AbsoluteToNanoseconds
para convertir eso a una unidad en el mundo real. Obviamente, tendrás que dividir eso por 1,000,000 para obtener milisegundos.
QA1398 sugiere mach_absolute_time
, pero UpTime
es más fácil, ya que devuelve el mismo tipo AbsoluteToNanoseconds
usos (sin “diversión puntero” como se muestra en la nota técnica).
AbsoluteToNanoseconds
devuelve UnsignedWide
, que es una estructura. (Esto se remonta a antes de que las máquinas Mac pudieran manejar valores escalares de 64 bits). Use la función UnsignedWideToUInt64
para convertirlo a escalar. Eso solo deja la resta, que harás de la manera normal.
Enlace de doc no específico de C++ para 'clock': http://developer.apple.com/mac/library/documentation/Darwin/Reference/ManPages/man3/clock.3.html –