Qual è l'equivalenza di Java System.currentTimeMillis()
in C?Ottieni l'ora corrente, in millisecondi, in C?
risposta
Vedi questa discussione: http://cboard.cprogramming.com/c-programming/51247-current-system-time-milliseconds.html
Si dice che la funzione time() è preciso al secondo, e la precisione più profonda richiede altre librerie ...
Controllare time.h
, forse qualcosa di simile alla funzione di gettimeofday()
.
Si può fare qualcosa di simile
struct timeval now;
gettimeofday(&now, NULL);
Quindi è possibile estrarre il tempo ottenendo i valori da now.tv_sec
e now.tv_usec
.
non
C'è la funzione time(), ma restituisce secondi, non millisecondi. Se è necessaria una maggiore precisione, è possibile utilizzare funzioni specifiche della piattaforma come Windows 'GetSystemTimeAsFileTime() o * nix gettimeofday().
Se in realtà non interessa la data e l'ora, ma desidera solo per cronometrare l'intervallo tra due eventi, in questo modo:
long time1 = System.currentTimeMillis();
// ... do something that takes a while ...
long time2 = System.currentTimeMillis();
long elapsedMS = time2 - time1;
poi la C equivalente è clock(). Su Windows, è più comune usare GetTickCount() per questo scopo.
Su Linux e altri sistemi simili a Unix, è necessario utilizzare clock_gettime(CLOCK_MONOTONIC). Se questo non è disponibile (ad es. Linux 2.4), puoi tornare a gettimeofday(). Quest'ultimo ha l'inconveniente di essere influenzato dalle regolazioni dell'orologio.
Su Windows, è possibile utilizzare QueryPerformanceCounter().
This code di miei estratti tutto quanto sopra in una semplice interfaccia che restituisce il numero di millisecondi come int64_t. Si noti che i valori di millisecondo restituiti sono intesi solo per uso relativo (ad es. Timeout) e non sono relativi a un particolare momento.
'CLOCK_MONOTONIC' non è del tutto equivalente alla funzione java, poiché anche la funzione java è influenzata dalle regolazioni del wallclock. È la scelta giusta per i timer di intervallo, ovviamente, ma se l'OP vuole un tempo di wallclock non sarà di aiuto. – bdonlan
- 1. Ottieni la data corrente (con 0: 00: 000) in millisecondi?
- 2. Come ottenere l'ora corrente in millisecondi da C in Linux?
- 3. Come ottenere il tempo corrente in millisecondi in C Programming
- 4. Ottieni la lingua corrente in C#
- 5. Ottieni dominio corrente in ASMX
- 6. Ottenere timestamp corrente con millisecondi
- 7. Timestamp corrente SQLite con millisecondi?
- 8. Come ottenere l'ora corrente in millisecondi in PHP?
- 9. Come ottenere l'ora corrente in millisecondi in Android
- 10. Ottieni lingua corrente in CultureInfo
- 11. Ottieni l'URL corrente in vb.net
- 12. Ottieni la selezione corrente in WindowsExplorer da un'applicazione C#?
- 13. Ottieni nome utente corrente in C++ su Windows
- 14. Ottieni titolo corrente della finestra attiva in C
- 15. Tentativo di aggiungere 3 giorni in millisecondi alla data corrente
- 16. SQLite: Inserire timestamp corrente con precisione millisecondi
- 17. Come convertire NSDate in millisecondi nell'obiettivo C?
- 18. Ottieni il tempo in millisecondi senza installare un pacchetto aggiuntivo?
- 19. Memorizzazione dell'ora corrente senza componente millisecondi
- 20. Ottieni l'ApplicationId corrente in ASP.NET MembershipProvider
- 21. Yii2 - Ottieni l'ID azione corrente in main.php
- 22. Ottieni nome utente corrente in Julia (Linux)
- 23. Ottieni nome file corrente in JSP
- 24. Ottieni testo visibile corrente in textview
- 25. Ottieni la cella corrente in Excel VB
- 26. Ottieni l'ora corrente IST in php
- 27. Visualizza millisecondi in Excel
- 28. Ottieni percorso cartella corrente
- 29. Ottieni il colore corrente
- 30. Ottieni la directory batchfile corrente
Quale sistema operativo? –
Vedere http://stackoverflow.com/questions/5303751/current-microsecond-time-in-c. Buone risposte lì. – netcoder
Possibile duplicato di [Come misurare il tempo in millisecondi usando ANSI C?] (Http://stackoverflow.com/questions/361363/how-to-measure-time-in-milliseconds-using-ansi-c) –