C'è un modo per ottenere millisecondi e la sua frazione dal 1970 usando time.h in linguaggio c?Come posso ottenere UTCTime in millisecondi dal 1 gennaio 1970 in linguaggio c
risposta
questo funziona su Ubuntu Linux:
struct timeval tv;
gettimeofday(&tv, NULL);
unsigned long long millisecondsSinceEpoch =
(unsigned long long)(tv.tv_sec) * 1000 +
(unsigned long long)(tv.tv_usec)/1000;
printf("%llu\n", millisecondsSinceEpoch);
Al momento in cui scriviamo, il printf() di cui sopra mi sta dando 1338850197035. È possibile fare un controllo di integrità sul sito TimestampConvert.com dove è possibile immettere il valore per ottenere il tempo equivalente leggibile dall'uomo (anche se senza precisione millisecondo).
Unix time or Posix time è il tempo in secondi dall'epoca che hai menzionato.
bzabhi La risposta è corretta: basta moltiplicare il timestamp Unix per 1000 per ottenere i millisecondi.
Tenere presente che tutti i valori di millisecondo restituiti facendo affidamento sul timestamp Unix saranno multipli di su 1000 (come 12345678000). La risoluzione è ancora solo 1 secondo.
Non si può ottenere la parte frazionaria
Il commento di Pavel è corretta anche. Il timestamp Unix non tiene conto dei secondi intercalari. Ciò rende ancora meno saggio fare affidamento su una conversione in millisecondi.
Qualsiasi altra libreria che può ottenere il millisecondo esatto inclusa la sua parte frazione ????? – Siddiqui
Il timestamp Unix è fondamentale quanto possiamo. Deve essere che i progettisti di Unix pensassero che una seconda risoluzione fosse sufficiente. Poi di nuovo il sovraccarico di mantenere una risoluzione di 1 ms era probabilmente al di là dei primi sistemi Unix. – pavium
Per Unix e Linux è possibile utilizzare gettimeofday.
Per Win32 è possibile utilizzare GetSystemTimeAsFileTime e quindi convert it to time_t + milliseconds.
gettimeofday() esegue ciò che è necessario. Ecco un esempio di codice: http://www.docs.hp.com/en/B9106-90009/gettimeofday.2.html Quindi, quali SO sta tentando di supportare Aman? – tpgould
Non è standard C, ma gettimeofday()
è presente nei sistemi derivati SysV e BSD ed è in POSIX. Restituisce il tempo da quando l'epoca in un struct timeval
:
struct timeval {
time_t tv_sec; /* seconds */
suseconds_t tv_usec; /* microseconds */
};
Se volete risoluzione millisecondo, è possibile utilizzare gettimeofday() in Posix. Per un'implementazione di Windows, vedi gettimeofday function for windows.
#include <sys/time.h>
...
struct timeval tp;
gettimeofday(&tp);
long int ms = tp.tv_sec * 1000 + tp.tv_usec/1000;
// the system time
SYSTEMTIME systemTime;
GetSystemTime(&systemTime);
// the current file time
FILETIME fileTime;
SystemTimeToFileTime(&systemTime, &fileTime);
// filetime in 100 nanosecond resolution
ULONGLONG fileTimeNano100;
fileTimeNano100 = (((ULONGLONG) fileTime.dwHighDateTime) << 32) + fileTime.dwLowDateTime;
//to milliseconds and unix windows epoche offset removed
ULONGLONG posixTime = fileTimeNano100/10000 - 11644473600000;
return posixTime;
- 1. Perché le date sono calcolate dal 1 ° gennaio 1970?
- 2. Java time: inizia il 1 gennaio 1970 alle 1:00?
- 3. Date precedenti al 01 gennaio 1970?
- 4. Data e ora della scala UTC in secondi dal 1 ° gennaio 1970
- 5. Come ottenere secondi da epoca (1/1/1970) in VBA?
- 6. Esiste una lettera per i millisecondi dal 1970 in SimpleDateFormat?
- 7. Converti ad es. 2012-05-25 a secondi dal 1 gennaio 1970
- 8. trovare quanti secondi passati dal 1/1/1970
- 9. DatePickerDialog che applica in modo errato una data minima del 1 gennaio 1970
- 10. Perché strtotime (1 gennaio 1970) restituisce -3600 anziché 0 in PHP?
- 11. oracle systimestamp (sysdate) in millisecondi
- 12. Il Navigatore di Highstock inizia sempre dal 1970-1-1
- 13. Come posso convertire un DateTime al numero di secondi dal 1970?
- 14. come convertire la data in RFC 3339 per l'oggetto data javascript (millisecondi dal 1970)
- 15. Come ottenere il tempo in millisecondi dall'epoca unix in Javascript?
- 16. Come si ottengono i millisecondi di epoca (1970-01-01) in Java?
- 17. Come ottenere l'ora corrente in millisecondi da C in Linux?
- 18. Come ottenere il tempo corrente in millisecondi in C Programming
- 19. Metodo Javascript per trovare il numero di millisecondi dal 1970-01-01?
- 20. Come convertire una data in millisecondi
- 21. come ottenere data da millisecondi in Android
- 22. Chiama C++ (C) dal linguaggio D
- 23. Come convertire NSDate in millisecondi nell'obiettivo C?
- 24. Perché char è di 1 byte in linguaggio C
- 25. Cosa restituisce x? : 1` significa in linguaggio C?
- 26. Come ottenere il tempo in millisecondi in Android Shell?
- 27. Iterator in linguaggio C
- 28. Come posso estrarre componenti temporali specifici da un UTCTime?
- 29. Converti millisecondi UTC in DATETIME nel server SQL
- 30. Conversione Long to Date in Java restituisce 1970
Non è possibile ottenere la parte frazione in modo indipendente dalla piattaforma. Su quale piattaforma ti stai concentrando? – dalle
Sto seguendo lo standard di ANSI C, in modo che la mia applicazione sia indipendente dalla piattaforma. Attualmente sono sulla piattaforma della finestra. – Siddiqui