Come si calcola, come numero intero, il numero di millisecondi tra ora e la volta precedente che ho ricordato come ora?
C'è qualche motivo per cui è necessario come un numero intero di millisecondi? Richiedere NSDate per l'intervallo di tempo trascorso da un'altra data ti darà un numero in virgola mobile di secondi. Se hai davvero bisogno di millisecondi, puoi semplicemente moltiplicare per quello per 1000 per ottenere un numero in virgola mobile di millisecondi. Se hai davvero bisogno di un numero intero, puoi arrotondare o troncare il valore a virgola mobile.
Se vuoi farlo con numeri interi, dall'inizio alla fine, utilizzare UpTime
o mach_absolute_time
per ottenere l'ora corrente in unità assolute, quindi utilizzare per convertire AbsoluteToNanoseconds
che ad un'unità del mondo reale. Ovviamente, dovrai dividerlo per 1.000.000 per ottenere millisecondi.
QA1398 suggerisce mach_absolute_time
, ma UpTime
è più facile, dal momento che restituisce lo stesso tipo AbsoluteToNanoseconds
usi (non “puntatore fun”, come indicato nella nota tecnica).
AbsoluteToNanoseconds
restituisce un UnsignedWide
, che è una struttura. (Questa roba risale a prima che le macchine Mac potessero gestire valori scalari a 64 bit.) Utilizzare la funzione UnsignedWideToUInt64
per convertirla in uno scalare. Questo lascia solo la sottrazione, che farai nel modo normale.
fonte
2009-12-12 16:31:38
Non-C++ - collegamento del documento specifico per 'clock': http://developer.apple.com/mac/library/documentation/Darwin/Reference/ManPages/man3/clock.3.html –