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 :

codeblocks (en C sous windows) mktime


Sujet :

C

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre confirmé

    Profil pro
    Inscrit en
    Janvier 2009
    Messages
    69
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2009
    Messages : 69
    Billets dans le blog
    1
    Par défaut codeblocks (en C sous windows) mktime
    Bonjour,
    J'ai un probleme de décalage d'1 heure qui se passe lorsque j'utilise la fonction mktime(). Ce décalage apparait dans la nuit du 26 au 27 octobre ????
    Si je mets .tm_isdst a 0, le décalage apparait dans la fonction ctime().
    Voici le code:
    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
    34
    35
    36
    37
            struct tm tmbidon;
            time_t tbidon, myreference, tdiff;
     
            tmbidon.tm_isdst = -1;
            tmbidon.tm_year = 13 + 100;   // ref 1900
            tmbidon.tm_mon = 9; /* Months *since* january: 0-11 */
            tmbidon.tm_mday = 27;
            tmbidon.tm_hour = 9;
            tmbidon.tm_min = 40;
            tmbidon.tm_sec = 0;
            myreference = mktime(&tmbidon);
     
            tmbidon.tm_isdst = -1;
            tmbidon.tm_mday = 26;
            tbidon = mktime(&tmbidon);
            tdiff = myreference-tbidon;
            printf("diff %I64usec  %fH\n", (u64)tdiff, ((float)tdiff)/3600);
            printf("myreference %s", ctime(&myreference));
            printf("tbidon %s", ctime(&tbidon));
     
     
            tmbidon.tm_isdst = 0;
            tmbidon.tm_year = 13 + 100;   // ref 1900
            tmbidon.tm_mon = 9; /* Months *since* january: 0-11 */
            tmbidon.tm_mday = 27;
            tmbidon.tm_hour = 9;
            tmbidon.tm_min = 40;
            tmbidon.tm_sec = 0;
            myreference = mktime(&tmbidon);
     
            tmbidon.tm_isdst = 0;
            tmbidon.tm_mday = 26;
            tbidon = mktime(&tmbidon);
            tdiff = myreference-tbidon;
            printf("diff %I64usec  %fH\n", (u64)tdiff, ((float)tdiff)/3600);
            printf("myreference %s", ctime(&myreference));
            printf("tbidon %s", ctime(&tbidon));
    Et le résultat:
    diff 90000sec  25.000000H                <= ???:(
    myreference Sun Oct 27 09:40:00 2013
    tbidon Sat Oct 26 09:40:00 2013
    diff 86400sec  24.000000H
    myreference Sun Oct 27 09:40:00 2013
    tbidon Sat Oct 26 10:40:00 2013        <= ???:(
    Est-ce que vous auriez une suggestion?

    Merci
    Mich

  2. #2
    Membre émérite
    Homme Profil pro
    Chef de projets retraité
    Inscrit en
    Juillet 2011
    Messages
    452
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Cher (Centre)

    Informations professionnelles :
    Activité : Chef de projets retraité
    Secteur : Transports

    Informations forums :
    Inscription : Juillet 2011
    Messages : 452
    Par défaut
    Bonjour,

    Le 27 octobre c'est le passage à l'heure d'hiver donc Même problème que ...


    http://www.developpez.net/forums/d23...ure-d-t-hiver/

    Cordialement

  3. #3
    Membre confirmé

    Profil pro
    Inscrit en
    Janvier 2009
    Messages
    69
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2009
    Messages : 69
    Billets dans le blog
    1
    Par défaut
    Finalement j'ai forcé daylight = 0; et tmp.tm_isdst = 0;
    Comme je fais des comparaisons de dates (date debut - date evenement) ca semble marcher car mes fichier proviennent d'un systeme embarque qui ne faisait pas le changement d'heure.

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

Discussions similaires

  1. codeblocks (en C sous windows 8) _wstat _wstat64
    Par mich35 dans le forum Débuter
    Réponses: 6
    Dernier message: 05/08/2014, 13h36
  2. codeblocks (en C sous windows) gestion du temps
    Par mich35 dans le forum Débuter
    Réponses: 2
    Dernier message: 04/08/2014, 19h03
  3. Configurer Codeblocks pour gdk_threads_init sous Windows
    Par acryline dans le forum GTK+ avec C & C++
    Réponses: 0
    Dernier message: 20/08/2010, 11h09
  4. Erreur dans codeblocks pour GTK sous Windows
    Par acryline dans le forum GTK+ avec C & C++
    Réponses: 2
    Dernier message: 09/08/2010, 14h27

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