2009-12-24 5 views
1

Je veux obtenir l'heure du système y compris la partie fractionnaire des secondes. Est-ce possible en standard c (ANSI C)? Si ce n'est pas le cas, dites-moi quelques bibliothèques pour OS de fenêtre afin que je le rende possible. Sous Linux j'ai le code suivant avec le travail bien pour moi.Comment obtenir la partie fractionnaire des secondes dans UTCTime en utilisant le temps.h

#include <sys/time.h>                 
#include <time.h>                  
#include <stdlib.h>                 
#include <stdio.h>                 

int main(void)                  
{                      
    char buffer[30];                 
    struct timeval tv;                 

    time_t curtime;                  



    gettimeofday(&tv, NULL);               
    curtime=tv.tv_sec;                 

    strftime(buffer,30,"%m-%d-%Y %T.",localtime(&curtime));       
    printf("%s%ld\n",buffer,tv.tv_usec);            

    return 0;                   


    } 

sortie est

25/12/2009 11: 09: 18,35443541

bien vouloir me aider, comment est-il possible pour OS fenêtre. SI ANSI C ne me le permet pas.

Répondre

1

La norme C ne fournit pas de cadencement de résolution de sous-seconde.

POSIX fournit un temps de résolution inférieur à la seconde - en fait, un certain nombre de façons différentes de le faire, y compris gettimeofday() que vous montrez.

1

Comme ceci:

#include <wtypes.h> 
int main() 
{ 
    SYSTEMTIME t; 
    GetSystemTime(&t); 
    int year = t.wYear; 
    int month = t.wMonth; 
    int day = t.wDay; 
    int hour = t.wHour; 
    int minute = t.wMinute; 
    int second = t.wSecond; 
    int second_fraction = t.wMilliseconds; 
    return 0; 
} 

Couple de points sur la performance s'il est important de vous:

1) gettimeofday() est assez rapide et si l'on utilise dans quelques fils, il ne provoque pas worsenig 2) À l'intérieur de localtime() il y a un appel à pthread_mutex_lock() (probablement parce qu'il a besoin de certains paramètres du système comme le jour). Ainsi, lorsque vous l'utilisez intensivement dans une application multithread, il peut y avoir des problèmes de performance.

+0

@skwllsp: - Veuillez me dire l'ref. ou un fichier d'en-tête que je dois inclure pour SYSTEMTIME et GetSystemTime ....! – Siddiqui

+0

#include

+0

Merci Skwllsp, j'ai essayé votre code mais il ne me donne pas de résultat précis. – Siddiqui