Gibt es eine Möglichkeit, Millisekunden und seinen Bruchteil von 1970 mit time.h in c-Sprache zu erhalten?Wie bekomme ich UTCTime in Millisekunde seit dem 1. Januar 1970 in c Sprache
Antwort
Dies funktioniert auf 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);
Zum Zeitpunkt des Schreibens dieses Artikels, die printf (oben) mir 1338850197035. schenken Sie können an der TimestampConvert.com Website eine Plausibilitätsprüfung tun, wo man Geben Sie den Wert ein, um die entsprechende vom Menschen lesbare Zeit zurückzuerhalten (allerdings ohne Millisekunden-Genauigkeit).
ist die Zeit in Sekunden seit der Epoche, die Sie erwähnten.
bzabhi ist die Antwort richtig: Sie multiplizieren einfach den Unix-Zeitstempel mit 1000, um Millisekunden zu erhalten.
Beachten Sie, dass alle Millisekunden-Werte, die mit dem Unix-Zeitstempel zurückgegeben werden, Vielfache von 1000 (wie 12345678000) sind. Die Auflösung beträgt immer noch nur 1 Sekunde.
Sie können nicht den Bruchteil erhalten
Der Kommentar von Pavel auch richtig ist. Der Unix-Zeitstempel berücksichtigt keine Schaltsekunden. Dies macht es noch weniger sinnvoll, sich auf eine Umwandlung in Millisekunden zu verlassen.
Jede andere Bibliothek, die genau die Milisekunde einschließlich ihres Bruchteils erhalten kann ????? – Siddiqui
Der Unix-Zeitstempel ist so grundlegend wie möglich. Es muss sein, dass die Entwickler von Unix dachten, eine Sekunde Auflösung sei genug. Andererseits lag der Aufwand für die Aufrechterhaltung einer 1ms-Auflösung wahrscheinlich über frühen Unix-Systemen. – pavium
Für Unix und Linux können Sie gettimeofday verwenden. Für Win32 können Sie GetSystemTimeAsFileTime und dann convert it to time_t + milliseconds verwenden.
gettimeofday() tut was benötigt wird. Hier ist ein Codebeispiel: http://www.docs.hp.com/en/B9106-90009/gettimeofday.2.html Also welche Betriebssysteme versucht Aman zu unterstützen? – tpgould
Es ist nicht Standard C, aber gettimeofday()
ist sowohl in SysV und BSD abgeleiteten Systemen vorhanden, und ist in POSIX. Es gibt die Zeit seit der Epoche in einem struct timeval
:
struct timeval {
time_t tv_sec; /* seconds */
suseconds_t tv_usec; /* microseconds */
};
Wenn Sie Millisekundenauflösung möchten, können Sie gettimeofday() in Posix verwenden können. Für eine Windows-Implementierung siehe 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. Java.util.Calendar - Millisekunden seit dem 1. Januar 1970
- 2. Scala UTC Zeitstempel in Sekunden seit dem 1. Januar 1970
- 3. Wie bekomme ich den aktuellen Zeitstempel in C++ seit 1970?
- 4. Daten vor dem 1. Januar 1970
- 5. Konvertieren von Daten vor dem 1. Januar 1970 in R
- 6. Konvertieren z. 2012-05-25 bis Sekunden seit 1. Januar 1970
- 7. Wie kann ich eine DateTime in die Anzahl der Sekunden seit 1970 konvertieren?
- 8. Wie Tag/Monat/Jahr Datum in .NET Stil 100ns Ticks seit dem 1. Januar 0001 konvertieren?
- 9. Unix Zeitstempel immer wieder 17. Januar 1970 in DateTime
- 10. Wie bekomme ich Sekunden seit der Epoche (1.1.1970) in VBA?
- 11. Warum ist 1/1/1970 die "Epoche"?
- 12. Wie konvertiert 1. Januar 2008 in C# datetime
- 13. Warum strtotime (1. Januar 1970) -3600 statt 0 in PHP zurückgibt?
- 14. Wie bekomme ich Millisekunden seit Mitternacht UTC in C?
- 15. Konvertieren von Datum und Uhrzeit in Anzahl von Sekunden seit 1970
- 16. Wie Datum in RFC 3339 zum Javascript Date-Objekt konvertieren (Millisekunden seit 1970)
- 17. Wie wandle ich ein Datum/eine Uhrzeit in Epochzeit (Unixzeit/Sekunden seit 1970) in Perl um?
- 18. Wie bekomme ich die UTC-Zeit in Python?
- 19. warum in c Sprache EOF IS -1?
- 20. Berechnung FPS in Javascript weniger als 1 Millisekunde
- 21. Konvertieren von 100-Nanosekunden in Millisekunde Verwirrung
- 22. Was gibt `zurück x? : 1 'bedeuten in C Sprache?
- 23. Cronjob für den 1. Januar jedes Jahr
- 24. Wie bekomme ich Dateinamen aus dem Ordner in C++
- 25. Entfernen der Millisekunde aus dem Zeitstempel
- 26. Wie bekomme ich Hash in einer serverseitigen Sprache?
- 27. Wie bekomme ich Videodatei Dauer in C#
- 28. Timestamp Problem 1970 statt 1988
- 29. Wie bekomme ich das Datum nach 12 Monaten in C#
- 30. Wie bekomme ich Zeit in Millisekunde von Datum Feld von Oracle für das Datum 01-01-9999
Sie können den Bruchteil nicht in einer plattformunabhängigen Weise erhalten. Auf welche Plattform fokussieren Sie sich? – dalle
Ich befolge den Standard von ANSI C, damit meine Anwendung plattformunabhängig ist. Momentan bin ich auf der Fensterplattform. – Siddiqui