Date et heure en C

Résolu/Fermé
JDs - 30 avril 2008 à 20:39
 JDs - 30 avril 2008 à 21:15
Bonjour, j'aimerais bien pouvoir utiliser time.h pour pouvoir avoir ceci par exemple : 30-04-2008 20:38

Est ce que c'est possible

merci de vos réponses

3 réponses

vignemail1 Messages postés 1246 Date d'inscription vendredi 8 octobre 2004 Statut Contributeur Dernière intervention 13 septembre 2019 259
30 avril 2008 à 20:41
strftime(....) et strptime(....) utiliser avec time(NULL)
0
Ok, mais j'ai quand même encore du mal à voir, comment je dois lui dire que je veux jj-mm-aaaa sans avoir le jour.

j'ai une variable que j'ai déclarer comme ceci

time_t t; puis ensuite je fais

time(&t);

...

Je sais pas trop comment m'expliquer c'est un peu nouveau pour moi

fin soit merci de ta réponse rapide
0
vignemail1 Messages postés 1246 Date d'inscription vendredi 8 octobre 2004 Statut Contributeur Dernière intervention 13 septembre 2019 259
30 avril 2008 à 20:53
si tu fais un time(NULL), tu récupères le timestamp actuel, donc ensuite avec strftime, tu formates la sortie comme tu l'entend.

Un exemple :
#include <time.h>
#include <stdio.h>
#include <stdlib.h>

int
main(int argc, char *argv[])
{
    char outstr[200];
    time_t t;
    struct tm *tmp;
     tmp = localtime(&t);
     if (tmp == NULL) {
         perror("localtime");
         exit(EXIT_FAILURE);
     }

     if (strftime(outstr, sizeof(outstr), argv[1], tmp) == 0) {
         fprintf(stderr, "strftime a renvoyé 0");
         exit(EXIT_FAILURE);
     }

     printf("La chaîne résultat est \"%s\"\n", outstr);
     exit(EXIT_SUCCESS);
 } 
0
Voici une partie de mon code

 

    char date[100];
    time_t t;

    time(&t); 
    
   strftime(date, sizeof(date), "%#d-%#m-%yyyy", t) ;



Si j'ai bien compris il prend t et le met au format du troisième paramètre et ensuite le met dans ma variable date ??
0
vignemail1 Messages postés 1246 Date d'inscription vendredi 8 octobre 2004 Statut Contributeur Dernière intervention 13 septembre 2019 259
30 avril 2008 à 21:07
time_t = int ou un long en interne alors que strftime prends un struct tm donc tu dois passer par localtime ou gmttime pour avoir la struct tm et ensuite formater par strftime
strftime converti en struct tm en une chaine formaté selon tes besoins et la stocke dans son premier paramètre, dans ton cas date.
Je pense que ton format doit plutôt être "%d-%m-%Y"
0
C'est bien ça un grand merci ... Je met mon code pour rappel

char date[100];
 time_t t;
 struct tm *tmp;
 tmp = localtime(&t);

 strftime(date, sizeof(date), "%d-%m-%Y", tmp) ;


Merci Encore ... :D
0