2009-07-02 7 views

Répondre

5

Vous utilisez gettimeofday (2) qui est défini dans POSIX.1 et BSD.

Il renvoie des secondes et des microsecondes comme défini dans struct timeval à partir de sys/time.h.

0

Vous trouverez des exemples de code C pour obtenir du temps et le convertir en différents formats here.

7

Ceci est un moyen simple:

time_t seconds_since_midnight = time(NULL) % 86400; 

Pour obtenir millisecondes approximatives depuis minuit, multipliez par seconds_since_midnight 1000.

Si vous avez besoin d'une résolution plus (si vous considérez vraiment faire), vous devrez utilisez une autre fonction telle que gettimeofday().

0

Jetez un oeil à gmtime() convertit directement à temps universel coordonné (UTC) ...

8

Ceci est la façon précise:

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

qui stockera dans msec le nombre de millisecondes depuis minuit. (ou -1 s'il y avait une erreur est survenue lors du temps.)

Bien qu'il soit généralement une mauvaise idée pour stocker le temps des valeurs dans un int, je suis un peu cavalière et en supposant int est d'au moins 32 bits , et peut facilement accommoder la gamme (-1) à 86 400 000.

Mais je ne sais pas si cela en vaut la peine.

+1

Il semble y avoir quelque chose de mal avec votre code, selon le C que je connais. Peut-être que vous auriez dû déclarer 'msec' à l'avance, aussi' else'. – ThoAppelsin

+0

@ThoAppelsin Bon point. Corrigée. Merci! – scraimer

Questions connexes