IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

C Discussion :

Afficher l'heure et la date en cours


Sujet :

C

  1. #1
    Nouveau membre du Club
    Inscrit en
    Janvier 2008
    Messages
    94
    Détails du profil
    Informations forums :
    Inscription : Janvier 2008
    Messages : 94
    Points : 34
    Points
    34
    Par défaut Afficher l'heure et la date en cours
    Salut à tous et à toutes ,


    J'utilise la bibliothéque time.h pour la géstion de la date et de l'heure mais l'heure qui est affichée est -2 heures si il est 8:00 du matin le programme affiche 6 heure du matin .


    J'aimerais avoir une idée comment faire pour ajouter +2 Heures pour avoir l'heure et la date du jour .

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
     
    int afficher_date(gestion_date *time) 
    {    
     
     
    time_t ts;
    struct tm *tb;
    struct tm t;  
     
    ts= time (NULL);     
    tb = localtime(&ts);  
     
     
     
      t.tm_hour = time->hour;
      t.tm_min  = time->min;
      t.tm_sec  = time->sec;
      t.tm_year = time->year;
      t.tm_mon  = time->month;
      t.tm_mday = time->day;  
     
     
     
       printf("Date d'aujourdh'ui : %s\n", ctime(&ts));
       printf("format date:: %d -  %d Min :%d Sec\n",tb->tm_hour,tb->tm_min,tb->tm_sec); 
     
     
     
     
      return localtime(&tb);  
     
     
    }
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
     
    typedef struct
    {
      unsigned char hour;
      unsigned char min;
      unsigned char sec;
      unsigned short year;
      unsigned char month;
      unsigned char day;
    }gestion_date;


    Le Résultat :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    Date d'aujourdh'ui : Saturday July  5  09:19:03 2008
    format date: 9 H : 19 Min : 3 Sec

    L'Heure corrécte est :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    Date d'aujourdh'ui : Saturday July  5  11:19:03 2008
    format date: 9 H : 19 Min : 3 Sec
    Comme vous pouvez le voir l'heure est de -2 Heures .
    Merci pour vos idées et différntes suggéstions qui peuvent régler ce probléme.

  2. #2
    Membre confirmé
    Inscrit en
    Juillet 2005
    Messages
    512
    Détails du profil
    Informations forums :
    Inscription : Juillet 2005
    Messages : 512
    Points : 641
    Points
    641
    Par défaut
    Ton code ne compile pas, je me demande comment tu as fait pour avoir un résultat ????
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    t.tm_hour = time->hour;
    time je ne sait pas d'ou tu le sort ?!?

  3. #3
    Nouveau membre du Club
    Inscrit en
    Janvier 2008
    Messages
    94
    Détails du profil
    Informations forums :
    Inscription : Janvier 2008
    Messages : 94
    Points : 34
    Points
    34
    Par défaut
    Citation Envoyé par Lucien63 Voir le message
    Ton code ne compile pas, je me demande comment tu as fait pour avoir un résultat ????
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    t.tm_hour = time->hour;
    time je ne sait pas d'ou tu le sort ?!?

    time = pointeur sur structure gestion_date .

  4. #4
    Membre confirmé
    Inscrit en
    Juillet 2005
    Messages
    512
    Détails du profil
    Informations forums :
    Inscription : Juillet 2005
    Messages : 512
    Points : 641
    Points
    641
    Par défaut
    Autant pour moi !
    J'avais fait un copié collé dans un main sans faire attention au paramètre de la fonction.

    Par contre mon compilateur n'aime pas avoir une variable du nom de time.
    Après modif, ça compile et j'ai la bonne heure.

  5. #5
    Nouveau membre du Club
    Inscrit en
    Janvier 2008
    Messages
    94
    Détails du profil
    Informations forums :
    Inscription : Janvier 2008
    Messages : 94
    Points : 34
    Points
    34
    Par défaut
    Le code que j'ai poster affiche la date mais - 2 heures , je chercher à trouver une solution pour ajouter +2 heures et avoir la bonne date et heure .

    tu as utiliser localtime , mktime ou gmtime pour avoir l'heure exacte ?

  6. #6
    Membre confirmé
    Inscrit en
    Juillet 2005
    Messages
    512
    Détails du profil
    Informations forums :
    Inscription : Juillet 2005
    Messages : 512
    Points : 641
    Points
    641
    Par défaut
    Citation Envoyé par Marley_T
    tu as utiliser localtime , mktime ou gmtime pour avoir l'heure exacte ?
    localtime

  7. #7
    Membre régulier
    Profil pro
    Inscrit en
    Juillet 2007
    Messages
    115
    Détails du profil
    Informations personnelles :
    Âge : 35
    Localisation : France, Paris (Île de France)

    Informations forums :
    Inscription : Juillet 2007
    Messages : 115
    Points : 110
    Points
    110
    Par défaut
    Salut,

    Pourquoi ne pas ajouter directement deux heures au timestamp ?
    Tu peux faire quelque chose comme ceci :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    #include <time.h>
    #include <stdio.h>
     
    void	print_time(time_t n_time)
    {
      char	*s_time;
     
      s_time = ctime(&n_time);
      printf("%s\n", s_time);
    }
     
    int		main(void)
    {
      time_t	n_time;
     
      n_time = time(NULL) + 3600 * 2;
      print_time(n_time);
      return (0);
    }

  8. #8
    Rédacteur

    Avatar de ram-0000
    Homme Profil pro
    Consultant en sécurité
    Inscrit en
    Mai 2007
    Messages
    11 517
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 61
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : Consultant en sécurité
    Secteur : High Tech - Opérateur de télécommunications

    Informations forums :
    Inscription : Mai 2007
    Messages : 11 517
    Points : 50 367
    Points
    50 367
    Par défaut
    Citation Envoyé par Lucien63 Voir le message
    Par contre mon compilateur n'aime pas avoir une variable du nom de time.
    C'est normal, il y a déjà une fonction qui s'appelle time() et cela le perturbe. Ton compilateur te demande juste d'avoir un peu plus d'imagination pour choisir tes noms de variable
    Raymond
    Vous souhaitez participer à la rubrique Réseaux ? Contactez-moi

    Cafuro Cafuro est un outil SNMP dont le but est d'aider les administrateurs système et réseau à configurer leurs équipements SNMP réseau.
    e-verbe Un logiciel de conjugaison des verbes de la langue française.

    Ma page personnelle sur DVP
    .

  9. #9
    Nouveau membre du Club
    Inscrit en
    Janvier 2008
    Messages
    94
    Détails du profil
    Informations forums :
    Inscription : Janvier 2008
    Messages : 94
    Points : 34
    Points
    34
    Par défaut
    Citation Envoyé par Tusbar Voir le message
    Salut,

    Pourquoi ne pas ajouter directement deux heures au timestamp ?
    Tu peux faire quelque chose comme ceci :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    #include <time.h>
    #include <stdio.h>
     
    void	print_time(time_t n_time)
    {
      char	*s_time;
     
      s_time = ctime(&n_time);
      printf("%s\n", s_time);
    }
     
    int		main(void)
    {
      time_t	n_time;
     
      n_time = time(NULL) + 3600 * 2;
      print_time(n_time);
      return (0);
    }

    Tusbar ton code à résolu le probléme :


    avant :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    Date d'aujourdh'ui : Saturday July  5  17:19:03 2008
    format date: 17 H : 19 Min : 3 Sec

    avec le code de Tusbar :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    Date d'aujourdh'ui : Saturday July  5  19:19:03 2008
    format date: 19H : 19 Min : 3 Sec
    Date est heure corrécte .


    La solution était d'ajouter au timestamp :
    1 Heure qui est égale à 3600 secondes et de multiplier par 2 les 3600sec.
    qui donne 1 heure fois 2 = 2 heures .
    + 3600 * 2 = + 2 heures Ou + 7200 secondes au temps .

    Merci à tous les intervenants et milles merci à Tusbar ton code à régler mon probléme .

    Probléme résolu .

  10. #10
    Membre confirmé
    Inscrit en
    Juillet 2005
    Messages
    512
    Détails du profil
    Informations forums :
    Inscription : Juillet 2005
    Messages : 512
    Points : 641
    Points
    641
    Par défaut
    Si moi j'utilise ton programme et que j'ajoute deux heures, ça n'est pas bon !
    C'est bon sur ta machine, mais pas sur la mienne !
    On peut donc en déduire que ce n'est pas fiable.

  11. #11
    Nouveau membre du Club
    Inscrit en
    Janvier 2008
    Messages
    94
    Détails du profil
    Informations forums :
    Inscription : Janvier 2008
    Messages : 94
    Points : 34
    Points
    34
    Par défaut
    Je suis sur une machine Intel x86 , Little Endian.

  12. #12
    Rédacteur

    Avatar de ram-0000
    Homme Profil pro
    Consultant en sécurité
    Inscrit en
    Mai 2007
    Messages
    11 517
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 61
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : Consultant en sécurité
    Secteur : High Tech - Opérateur de télécommunications

    Informations forums :
    Inscription : Mai 2007
    Messages : 11 517
    Points : 50 367
    Points
    50 367
    Par défaut
    Citation Envoyé par Marley_T Voir le message
    Je suis sur une machine Intel x86 , Little Endian.
    Je pense que le problème n'est pas là. Il est plutôt lié à ton décalage horaire par rapport à l'heure GMT.
    Raymond
    Vous souhaitez participer à la rubrique Réseaux ? Contactez-moi

    Cafuro Cafuro est un outil SNMP dont le but est d'aider les administrateurs système et réseau à configurer leurs équipements SNMP réseau.
    e-verbe Un logiciel de conjugaison des verbes de la langue française.

    Ma page personnelle sur DVP
    .

  13. #13
    Membre régulier
    Profil pro
    Inscrit en
    Juillet 2007
    Messages
    115
    Détails du profil
    Informations personnelles :
    Âge : 35
    Localisation : France, Paris (Île de France)

    Informations forums :
    Inscription : Juillet 2007
    Messages : 115
    Points : 110
    Points
    110
    Par défaut
    Citation Envoyé par Lucien63 Voir le message
    Si moi j'utilise ton programme et que j'ajoute deux heures, ça n'est pas bon !
    C'est bon sur ta machine, mais pas sur la mienne !
    On peut donc en déduire que ce n'est pas fiable.
    Un peu plus de details ?

  14. #14
    Nouveau membre du Club
    Inscrit en
    Janvier 2008
    Messages
    94
    Détails du profil
    Informations forums :
    Inscription : Janvier 2008
    Messages : 94
    Points : 34
    Points
    34
    Par défaut
    ram_0000 , le probléme est résolu en y ajoutant 2 heures .
    C'est un probléme d'horraire GMT par rapport à ma zone géographique .

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    time = time(NULL) + 3600 * 2;
    Milles merci à Tusbar .

  15. #15
    Membre éprouvé Avatar de orfix
    Homme Profil pro
    Inscrit en
    Avril 2007
    Messages
    707
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Maroc

    Informations professionnelles :
    Secteur : High Tech - Produits et services télécom et Internet

    Informations forums :
    Inscription : Avril 2007
    Messages : 707
    Points : 1 132
    Points
    1 132
    Par défaut
    Salut,
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
     
    int afficher_date(gestion_date *time) 
    {    
     
     
    time_t ts;
    struct tm *tb;
    struct tm t;  
     
    ts= time (NULL);     
    tb = localtime(&ts);  
     
     
     
      t.tm_hour = time->hour;
      t.tm_min  = time->min;
      t.tm_sec  = time->sec;
      t.tm_year = time->year;
      t.tm_mon  = time->month;
      t.tm_mday = time->day;  
     
     
     
       printf("Date d'aujourdh'ui : %s\n", ctime(&ts));
       printf("format date:: %d -  %d Min :%d Sec\n",tb->tm_hour,tb->tm_min,tb->tm_sec); 
     
     
     
     
      return localtime(&tb);  
     
     
    }
    Le prototype de localtime est :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    struct tm *localtime(const time_t *timep);
    Ton code corrigé en conséquence ...cela donne :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
     
    struct tm* afficher_date_test(gestion_date *p_time) 
    {    
    	time_t ts;
    	struct tm *tb;
    	struct tm t;  
     
    	ts= time (NULL);     
    	tb = localtime(&ts);  
            /* Je ne vois pas le sens de ces affectations ...*/ 
    	t.tm_hour = p_time->hour;
    	t.tm_min  = p_time->min;
    	t.tm_sec  = p_time->sec;
    	t.tm_year = p_time->year;
    	t.tm_mon  = p_time->month;
    	t.tm_mday = p_time->day;  
     
    	printf("Date d'aujourdh'ui : %s\n", ctime(&ts));
    	printf("format date:: %d -  %d Min :%d Sec\n",tb->tm_hour,tb->tm_min,tb->tm_sec); 
            /* en supposant que tu voulais passer ts au lieu de tb ...*/
    	return localtime(&ts);  
    }
    Il faudra peut être aussi tester le retour des fonctions ...
    To start press any key. (reading screen) Where's the "any" key? I see Esc, Catarl, and Pig Up. There doesn't seem to be any "any" key. Wo! All this computer hacking is making me thirsty. I think I'll order a Tab. (presses TAB key). -- HOMER --

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. [débutante]Afficher l'heure ou la date
    Par Lydie12 dans le forum Développement
    Réponses: 9
    Dernier message: 16/05/2014, 15h50
  2. [WD17] Afficher l'heure et la date.
    Par manu79 dans le forum WinDev
    Réponses: 18
    Dernier message: 16/09/2013, 20h12
  3. Affiche l'heure et la date dans un jLabel
    Par thaundeadboss dans le forum Collection et Stream
    Réponses: 2
    Dernier message: 09/06/2008, 00h10
  4. afficher l'heure et date
    Par ulysse031 dans le forum AWT/Swing
    Réponses: 8
    Dernier message: 24/03/2007, 15h22
  5. [Dates] Afficher à des heures aléatoires ?
    Par kevinf dans le forum Langage
    Réponses: 20
    Dernier message: 02/12/2006, 23h30

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo