Come ottengo l'ora corrente su Linux in millisecondi?Come ottenere l'ora corrente in millisecondi da C in Linux?
risposta
Utilizzare gettimeofday()
per ottenere il tempo in secondi e in microsecondi. La combinazione e l'arrotondamento in millisecondi viene lasciato come esercizio.
Se stai cercando qualcosa da digitare nella tua riga di comando, allora date +%H:%M:%S.%N
ti darà il tempo con i nanosecondi.
Non proprio: la domanda è contrassegnata da "C" e richiede tempo epoch in millisecondi. – pilcrow
Devi fare qualcosa di simile:
struct timeval tv;
gettimeofday(&tv, NULL);
double time_in_mill =
(tv.tv_sec) * 1000 + (tv.tv_usec)/1000 ; // convert tv_sec & tv_usec to millisecond
In seguito è la funzione util per ottenere timestamp corrente in millisecondi:
#include <sys/time.h>
long long current_timestamp() {
struct timeval te;
gettimeofday(&te, NULL); // get current time
long long milliseconds = te.tv_sec*1000LL + te.tv_usec/1000; // calculate milliseconds
// printf("milliseconds: %lld\n", milliseconds);
return milliseconds;
}
A proposito di fuso orario:
gettimeofday() supporto a spe cify timezone, Io uso NULL, che ignora il fuso orario, ma è possibile specificare un fuso orario, se necessario.
@Update - fusorario
Poiché la long
rappresentazione del tempo non è pertinente o effettuata da fusorario stessa, così modificando tz
param di gettimeofday() non è necessaria, in quanto ha vinto non fanno alcuna differenza
E, secondo uomo pagina gettimeofday()
, l'uso della struttura timezone
è obsoleto, quindi l'argomento tz
dovrebbe di norma essere specificato come NULL, per i dettagli si prega di consultare la pagina man.
> gettimeofday() supporto per specificare il fuso orario, io uso NULL, che ignora il fuso orario, ma è possibile specificare un fuso orario, se necessario. Si sbaglia. Il fuso orario deve essere introdotto esclusivamente tramite chiamata a localtime(). –
@ vitaly.v.ch Ho fatto un test, passando il parametro 'tz' di' gettimeofday() 'come' & (struct timezone tz = {480, 0}) 'non otterrà alcun avviso, e non lo farà Non ha alcun effetto sul risultato, questo ha senso, dal momento che la rappresentazione "lunga" del tempo non è rilevante o influenzata dal fuso orario stesso, giusto? –
Non c'era motivo di fare alcun test. Il kernel di Linux non ha informazioni corrette sui fusi orari e allo stesso tempo non ha modo di fornirlo. È un motivo per cui l'argomento tz viene elaborato in modo molto specifico. la rappresentazione lunga non ha importanza. –
Questo può essere ottenuto utilizzando la funzione clock_gettime
.
Nella versione corrente di POSIX, gettimeofday
è marked obsolete. Ciò significa che può essere rimosso da una versione futura della specifica. Gli scrittori di applicazioni sono invitati a utilizzare la funzione clock_gettime
anziché gettimeofday
.
Ecco un esempio di come utilizzare clock_gettime
:
#define _POSIX_C_SOURCE 200809L
#include <inttypes.h>
#include <math.h>
#include <stdio.h>
#include <time.h>
void print_current_time_with_ms (void)
{
long ms; // Milliseconds
time_t s; // Seconds
struct timespec spec;
clock_gettime(CLOCK_REALTIME, &spec);
s = spec.tv_sec;
ms = round(spec.tv_nsec/1.0e6); // Convert nanoseconds to milliseconds
if (ms > 999) {
s++;
ms = 0;
}
printf("Current time: %"PRIdMAX".%03ld seconds since the Epoch\n",
(intmax_t)s, ms);
}
Se il vostro obiettivo è quello di misurare il tempo trascorso, e il vostro sistema supporta l ' "orologio monotona" l'opzione, allora si dovrebbe considerare l'utilizzo CLOCK_MONOTONIC
invece di CLOCK_REALTIME
.
+1 per essere POSIXly corretto - ma la tua risposta ha le unità sbagliate. L'OP non vuole il tempo _con_ millisecondi, ma il tempo _in_ millisecondi. – pilcrow
Buona soluzione ma non dimenticare _-lm_ nel comando 'gcc'. –
in base alla manpage per round, si desidera utilizzare lround quando si assegna il risultato a un intero (o lungo) – hildred
C11 timespec_get
Ritorna fino a nanosecondi, arrotondato alla risoluzione di attuazione.
È già implementato in Ubuntu 15.10. API è uguale a POSIX clock_gettime
.
#include <time.h>
struct timespec ts;
timespec_get(&ts, TIME_UTC);
struct timespec {
time_t tv_sec; /* seconds */
long tv_nsec; /* nanoseconds */
};
Maggiori dettagli qui: https://stackoverflow.com/a/36095407/895245
- 1. Come ottenere il tempo corrente in millisecondi in C Programming
- 2. Ottieni l'ora corrente, in millisecondi, in C?
- 3. Ottenere timestamp corrente con millisecondi
- 4. Come ottenere l'ora corrente in millisecondi in PHP?
- 5. Come ottenere l'ora corrente in millisecondi in Android
- 6. come ottenere data da millisecondi in Android
- 7. Come stampare la differenza di orario in precisione di millisecondi e nanosecondi da C in Linux?
- 8. C'è qualche modo in XQuery per ottenere l'ora corrente in millisecondi da qualche Epoch?
- 9. Come ottenere il tempo in millisecondi dall'epoca unix in Javascript?
- 10. Ottenere l'ora corrente in C
- 11. come posso ottenere l'ora corrente in C#?
- 12. Come ottenere minuti, secondi e millisecondi da datetime.now() in python?
- 13. Come ottenere il nome utente in C/C++ in Linux?
- 14. Timestamp corrente SQLite con millisecondi?
- 15. Come convertire NSDate in millisecondi nell'obiettivo C?
- 16. Ottieni la data corrente (con 0: 00: 000) in millisecondi?
- 17. Come ottenere un valore DateDiff in millisecondi in VBA (Excel)?
- 18. Come ottenere il tempo in millisecondi in Android Shell?
- 19. Come ottenere la data corrente in ReactNative?
- 20. cambiare la directory corrente in Linux utilizzando C++
- 21. Ottieni l'ora corrente in secondi da Epoch su Linux, Bash
- 22. Come ottenere l'URL della pagina corrente in C#
- 23. Come ottenere il fuso orario dell'utente corrente in C#
- 24. Come posso ottenere il mio server DNS corrente in C#?
- 25. Come ottenere 'millisecondi' come parte del tempo in perl?
- 26. Come ottenere l'ora corrente da internet in Android
- 27. Come ottenere l'istanza del modello corrente da inlineadmin in Django
- 28. Come posso ottenere UTCTime in millisecondi dal 1 gennaio 1970 in linguaggio c
- 29. Come ottenere l'ID istanza corrente da boto3?
- 30. Tentativo di aggiungere 3 giorni in millisecondi alla data corrente
è consuetudine su StackOverflow ad una domanda nel corpo della tua domanda. – msw