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) gestion du temps


Sujet :

C

  1. #1
    Membre du Club

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

    Informations forums :
    Inscription : Janvier 2009
    Messages : 69
    Points : 67
    Points
    67
    Billets dans le blog
    1
    Par défaut codeblocks (en C sous windows) gestion du temps
    Bonjour,
    Je cherche comment gérer le temps sous codeblocks. J'ai une date sous le format 23/05/12 16h30min00. Lorsque je rentre ces champs sous codesblock dans la structure tmp
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
     
        struct tm tmp;
        time_t t1;
    que je transforme la structure en temps puis le temps en structure et que je l'affiche
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
     
            tmp.tm_year = 100+12;  // ref 1900
            tmp.tm_mon = 06;
            tmp.tm_mday = 23;
            tmp.tm_hour = 19;
            tmp.tm_min = 42;
            tmp.tm_sec = 02;
            t1 = mktime(&tmp);
    printf("date debut1 %s\n", asctime(&tmp));
    résultat :
       date debut1 Mon Jul 23 19:42:02 2012
    Jul ou lieu de Jun???
    Parfois le décalage est sur les heures ??

    Est-ce que vous auriez une idée?
    Est-ce qu'il y a une autre façon de gérer le temps?
    (je dois récupérer t1 pour voir les dépassements de dates)

    Merci
    Mich

  2. #2
    Membre du Club

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

    Informations forums :
    Inscription : Janvier 2009
    Messages : 69
    Points : 67
    Points
    67
    Billets dans le blog
    1
    Par défaut
    autre chose bizarre: mktime() force la valeur du champ tm_isdst. Si je le mets a 0, apres utilisation de mktime(), il est passé à 1 dans la structure. C'est sans doute mon probleme de decalage d'une heure: isdst n'etait pas initialisé. Donc je veux bien l'initialiser a 1 mais que va-t'il se passer lorsqu'on sera en hiver? Est-ce que je vais trouver un decalage d'une heure pour les dates d'été?
    De plus, je compare des temps qui s'incrémente avec un temps de reference, il va donc y avoir un saut lors du changement d'heure?

    => Comment puis-je empecher mktime() de changer le champs tm_isdst de ma structure?

  3. #3
    Membre éprouvé
    Homme Profil pro
    Chef de projets retraité
    Inscrit en
    Juillet 2011
    Messages
    420
    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 : 420
    Points : 1 102
    Points
    1 102
    Par défaut
    Bonjour,

    Déclaration de TM: (Click droit dans CodeBlock => Find declaration of...)

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    struct tm
    {
    	int	tm_sec;		/* Seconds: 0-59 (K&R says 0-61?) */
    	int	tm_min;		/* Minutes: 0-59 */
    	int	tm_hour;	/* Hours since midnight: 0-23 */
    	int	tm_mday;	/* Day of the month: 1-31 */
    	int	tm_mon;		/* Months *since* january: 0-11 */
    	int	tm_year;	/* Years since 1900 */
    	int	tm_wday;	/* Days since Sunday (0-6) */
    	int	tm_yday;	/* Days since Jan. 1: 0-365 */
    	int	tm_isdst;	/* +1 Daylight Savings Time, 0 No DST,
    				 * -1 don't know */
    };
    Soit Janvier = 0 .... donc juillet = 6.

    Par ailleurs : Description des fonctions mktime dans la "The GNU C Library"
    Function: time_t mktime (struct tm *brokentime)

    The mktime function is used to convert a broken-down time structure to a simple time representation. It also “normalizes” the contents of the broken-down time structure, by filling in the day of week and day of year based on the other date and time components.

    The mktime function ignores the specified contents of the tm_wday and tm_yday members of the broken-down time structure. It uses the values of the other components to determine the calendar time; it's permissible for these components to have unnormalized values outside their normal ranges. The last thing that mktime does is adjust the components of the brokentime structure (including the tm_wday and tm_yday).

    If the specified broken-down time cannot be represented as a simple time, mktime returns a value of (time_t)(-1) and does not modify the contents of brokentime.

    Calling mktime also sets the variable tzname with information about the current time zone. See Time Zone Functions.
    => Donc cette fonction met à jour les zones de ta variable tm.


    Cordialement

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

Discussions similaires

  1. Réponses: 0
    Dernier message: 14/01/2011, 22h35
  2. 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
  3. 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
  4. Réponses: 3
    Dernier message: 30/09/2008, 11h36

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