2009-07-02 13 views

Antwort

5

Sie verwenden gettimeofday (2), die in POSIX.1 und BSD definiert ist.

Es gibt Sekunden und Mikrosekunden zurück, wie in struct timeval von sys/time.h definiert.

0

Sie finden C Codebeispiele, um Zeit zu gewinnen und in verschiedene Formate zu konvertieren here.

7

Dies ist eine einfache Art und Weise:

time_t seconds_since_midnight = time(NULL) % 86400; 

Um seit Mitternacht ungefähre Millisekunden zu erhalten, multiplizieren seconds_since_midnight von 1000.

Wenn Sie mehr Auflösung benötigen (überlegen, ob Sie wirklich tun), müssen Sie Verwenden Sie eine andere Funktion wie gettimeofday().

0

Werfen Sie einen Blick auf gmtime() Wandelt direkt in Coordinated Universal Time (UTC) ...

8

Dies ist die genaue Art und Weise:

struct timeval tv; 
int msec = -1; 
if (gettimeofday(&tv, NULL) == 0) 
{ 
    msec = ((tv.tv_sec % 86400) * 1000 + tv.tv_usec/1000); 
} 

, die in msec die Anzahl der Millisekunden speichern wird seit Mitternacht. (oder -1, wenn ein Fehler war, die Zeit zu bekommen.)

Obwohl es in der Regel eine schlechte Idee ist Zeit-Werte in einem int zu speichern, ich bin ein wenig Kavalier zu sein und int vorausgesetzt, mindestens 32-bit und kann leicht den Bereich (-1) bis 86.400.000 aufnehmen.

Aber ich weiß nicht, ob es die Mühe wert ist.

+1

Es scheint etwas mit Ihrem Code falsch zu sein, entsprechend dem C, das ich kenne. Vielleicht hättest du vorher 'msec' deklarieren sollen, auch 'else'. – ThoAppelsin

+0

@ThoAppelsin Guter Punkt. Korrigiert. Vielen Dank! – scraimer

Verwandte Themen