134 votes

Obtenir l'heure actuelle en C

Je veux connaître l'heure actuelle de mon système. Pour cela, j'utilise le code suivant en C :

time_t now;
struct tm *mytime = localtime(&now); 
if ( strftime(buffer, sizeof buffer, "%X", mytime) )
{
    printf("time1 = \"%s\"\n", buffer);
}

Le problème est que ce code donne un peu de temps au hasard. De plus, le temps aléatoire est différent à chaque fois. Je veux l'heure actuelle de mon système.

163voto

mingos Points 11608

Copier-coller à partir d'ici :

/* localtime example */
#include <stdio.h>
#include <time.h>

int main ()
{
  time_t rawtime;
  struct tm * timeinfo;

  time ( &rawtime );
  timeinfo = localtime ( &rawtime );
  printf ( "Current local time and date: %s", asctime (timeinfo) );
  
  return 0;
}

(il suffit d'ajouter void main() pour que cela fonctionne en C)

90voto

Erik Points 38942

Initialisez votre variable now.

time_t now = time(0); // Get the system time

La fonction localtime est utilisée pour convertir la valeur de temps dans le time_t passé en struct tm, il ne récupère pas réellement le temps système.

44voto

zishan Points 136

Facile :

#include <time.h>
#include <stdio.h>
#include <string.h>

int main(void)
{
    time_t mytime = time(NULL);
    char * time_str = ctime(&mytime);
    time_str[strlen(time_str)-1] = '\0';
    printf("Current Time : %s\n", time_str);

    return 0;
}

23voto

hexinpeter Points 1240

Pour étendre la réponse de @mingos ci-dessus, j'ai écrit la fonction ci-dessous pour formater mon temps à un format spécifique ([dd mm aaaa hh :mm :ss]).

// Store the formatted string of time in the output
void format_time(char *output){
    time_t rawtime;
    struct tm * timeinfo;
    
    time(&rawtime);
    timeinfo = localtime(&rawtime);
    
    sprintf(output, "[%d %d %d %d:%d:%d]", timeinfo->tm_mday,
            timeinfo->tm_mon + 1, timeinfo->tm_year + 1900,
            timeinfo->tm_hour, timeinfo->tm_min, timeinfo->tm_sec);
}

Plus d'informations sur struct tm peuvent être trouvées ici.

14voto

guneet Points 131
#include<stdio.h>
#include<time.h>

void main()
{
    time_t t;
    time(&t);
    printf("\n current time is : %s",ctime(&t));
}

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X