Heure d'été [Résolu]

BastienL21 172 Messages postés dimanche 10 décembre 2000Date d'inscription 12 février 2009 Dernière intervention - 7 mai 2008 à 22:18 - Dernière réponse :  racpp
- 10 mai 2008 à 21:55
Bonjour tout le monde,

Etant en train de
programmer un mini-OS (tournant sous Windows XP), je suis confronté à
un problème qui ne doit pas être très difficile à contourner mais
auquel je ne trouve solution.

Depuis le passage en heure d'été, mon PC y est donc passé tout seul
mais surprise, en démarrant mon programme qui reste en heure d'hiver.

Ma question est donc de savoir si qulqu'un connait un solution pour récupérer l'heure correct

 (sans faire H % 86400 / 3600 + 1 +1).

(je récupère l'heure via le code :

        //inclure #include <time.h>

          long H;

          time(&H);            // Recupere l'heure

    printf("%ld heure, ", H % 86400 / 3600 + 1);

    printf("%ld minute, ", H%3600 / 60);

    printf("%ld secondes.", H%60);

)

                                 Cordialement,
                                             Bastien[javascript:Insert_Emoticon('/imgs2/smile.gif'); ]
Afficher la suite 

Votre réponse

21 réponses

Meilleure réponse
cs_jfrancois 482 Messages postés vendredi 26 août 2005Date d'inscription 5 décembre 2009 Dernière intervention - 10 mai 2008 à 20:54
3
Merci
Je viens d'essayer sur Code::Blocks, il me refuse cette librairie.

Autre hypothèse : C'est compilé en C ou en C++ ? Si c'est en C alors la mention struct est obligatoire devant tm (facultavive en C++).

Jean-François

Merci cs_jfrancois 3

Avec quelques mots c'est encore mieux Ajouter un commentaire

Codes Sources a aidé 101 internautes ce mois-ci

Commenter la réponse de cs_jfrancois
cs_jfrancois 482 Messages postés vendredi 26 août 2005Date d'inscription 5 décembre 2009 Dernière intervention - 8 mai 2008 à 00:01
0
Merci
Bonsoir,

Fonction localtime() pour récupérer l'heure locale.

Jean-François
Commenter la réponse de cs_jfrancois
BastienL21 172 Messages postés dimanche 10 décembre 2000Date d'inscription 12 février 2009 Dernière intervention - 8 mai 2008 à 10:17
0
Merci
Merci Jean-Francois mais comment fait-on pour récupérer l'heure à partir de ceci?
Si je met:

  long h = 0;
localtime(&h);
    printf("%ld", h);

il me retourne la valeur de base de h (si j'initialise h à 2, la console m'affiche 2...)
Pourais-tu mettre un petit bout de code qui permet de l'afficher STP?


Cordialement,
[Insert_Emoticon%28%27/imgs2/smile.gif%27%29;

]

               Bastien
Commenter la réponse de BastienL21
cs_jfrancois 482 Messages postés vendredi 26 août 2005Date d'inscription 5 décembre 2009 Dernière intervention - 8 mai 2008 à 10:52
0
Merci
Voilà le nécessaire pour afficher la date et l'heure en heures locales :

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



int main(void)
{
   static const char* aszJours[] =
   {"Dimanche","Lundi","Mardi","Mercredi","Jeudi","Vendredi","Samedi"};




   // --- Lire l'horloge et la convertir en heure locale
   time_t Time = time(NULL);
   tm* pTM = localtime(&Time);




   // --- Date
   printf("\n%s %02d/%02d/%04d (jour %d)\n"
         ,aszJours[pTM->tm_wday] // jour de la semaine (0=dim à 6=sam)
         ,pTM->tm_mday           // jour dans le mois (1 à 31)
         ,pTM->tm_mon  + 1       // mois (0 à 11)
         ,pTM->tm_year + 1900    // année / 1900
         ,pTM->tm_yday + 1);     // jour dans l'année (0 à 366)




   // --- Horaire
   printf("%02d:%02d:%02d"
         ,pTM->tm_hour           // heures (0 à 23)
         ,pTM->tm_min            // minutes (0 à 59)
         ,pTM->tm_sec);          // secondes (0 à 59)




   // --- Heure d'été/d'hiver
   if (pTM->tm_isdst > 0)
      printf(" (heure d'ete)");
   else if (pTM->tm_isdst == 0)
      printf(" (heure d'hiver)");
   else
      printf(" (heure d'ete/hiver inconnu)");
   printf("\n\n");
   return 0;
}


Ce qui donne :

Jeudi 08/05/2008 (jour 129)
10:49:05 (heure d'ete)



Jean-François
Commenter la réponse de cs_jfrancois
BastienL21 172 Messages postés dimanche 10 décembre 2000Date d'inscription 12 février 2009 Dernière intervention - 8 mai 2008 à 10:59
0
Merci
Merci beaucoup mais Code::Blocks m'affiche les messages suivant à la compilation:


error 'tm' undeclared (first in this fonction)

error 'pTM' undeclared (first in this fonction)

Cordialement,[Insert_Emoticon%28%27/imgs2/smile.gif%27%29; ]
                    Bastien
Commenter la réponse de BastienL21
cs_jfrancois 482 Messages postés vendredi 26 août 2005Date d'inscription 5 décembre 2009 Dernière intervention - 8 mai 2008 à 11:50
0
Merci
J'utilise Microsoft Visual C++ 6.0 mais j'ai aussi Code::Blocks 8.02 sous lequel je viens de tester ce petit programme tel quel : aucune erreur, aucun warning et résultat exact !

Jean-François
Commenter la réponse de cs_jfrancois
BastienL21 172 Messages postés dimanche 10 décembre 2000Date d'inscription 12 février 2009 Dernière intervention - 8 mai 2008 à 12:02
0
Merci
Je pense qu'il faudrait que je télécharge une version plus récente de Code: :Blocks pour commencer  (Je suis en 1.0 RC2 (!!!)) et que je réessaye.

Cordialement,[Insert_Emoticon%28%27/imgs2/smile.gif%27%29; ]
                    Bastien
Commenter la réponse de BastienL21
cs_jfrancois 482 Messages postés vendredi 26 août 2005Date d'inscription 5 décembre 2009 Dernière intervention - 8 mai 2008 à 12:07
0
Merci
Oui en effet, ce sont les débuts de Code::Blocks et il ne devait pas tout y avoir !

Jean-François
Commenter la réponse de cs_jfrancois
BastienL21 172 Messages postés dimanche 10 décembre 2000Date d'inscription 12 février 2009 Dernière intervention - 8 mai 2008 à 12:10
0
Merci
Merci beaucoup de votre aide,
 je vous tiendrais au courant lorsque j'aurais un version plus récente

Cordialement,[Insert_Emoticon%28%27/imgs2/smile.gif%27%29; ]
          Bastien
                    
Commenter la réponse de BastienL21
BastienL21 172 Messages postés dimanche 10 décembre 2000Date d'inscription 12 février 2009 Dernière intervention - 8 mai 2008 à 19:56
0
Merci
Bonsoir,
J'ai installé  C::B 8.02!! mais .... Toujours ces mêmes message d'erreurs!! :-(
Quel type de variable est-ce senser être ? (car en effet je ne vois pas où elles sont déclarer); j'ai essayé de les déclarer, en type long... mais dans ces cas j'ai droit à "invalide value in assignement" à la compilation

Cordialement,[Insert_Emoticon%28%27/imgs2/smile.gif%27%29; ]
             Bastien
 
Commenter la réponse de BastienL21
cs_jfrancois 482 Messages postés vendredi 26 août 2005Date d'inscription 5 décembre 2009 Dernière intervention - 8 mai 2008 à 21:18
0
Merci
Aucun include n'a été oublié ? La structure tm est déclarée dans time.h.

Jean-François
Commenter la réponse de cs_jfrancois
BastienL21 172 Messages postés dimanche 10 décembre 2000Date d'inscription 12 février 2009 Dernière intervention - 8 mai 2008 à 21:24
0
Merci
bonsoir,
Non time.h est bien déclarée, j'ai même essayé en incluant tte la liste suivante, sans résultat :

#include <stdio.h>
#include <stdlib.h>
#include <conio.h>
#include <windows.h>
#include <time.h>
#include <dos.h>
#include <sys\timeb.h>
#include <sys/types.h>
#include <dirent.h>
#include <sys/stat.h>
#include
#include <stddef.h>
#include <winsock.h>
#include <string.h>

Cordialement,[Insert_Emoticon%28%27/imgs2/smile.gif%27%29; ]
             Bastien
 
Commenter la réponse de BastienL21
BastienL21 172 Messages postés dimanche 10 décembre 2000Date d'inscription 12 février 2009 Dernière intervention - 10 mai 2008 à 16:53
0
Merci
Le plus bizard est que, quand o écrit le nom d'une structure (ici tm) pour afficher en printf, il me propose via un mini menu déroulant les variable qui sont dedans (tm_hour; tm_min; tm_sec, etc...), preuve qu'il la trouve bien cette structure!
Mais il ne veut pas compiler (C::B dit tjs à la compilation: undeclared (first in this function))... snif,quelqu'un aurait-il une solution?

Cordialement,[Insert_Emoticon%28%27/imgs2/smile.gif%27%29; ]
             Bastien
 
Commenter la réponse de BastienL21
cs_jfrancois 482 Messages postés vendredi 26 août 2005Date d'inscription 5 décembre 2009 Dernière intervention - 10 mai 2008 à 19:48
0
Merci
Ca pourrait être un problème de librairie non prise en compte par le linker : ici libc.lib

Jean-François
Commenter la réponse de cs_jfrancois
BastienL21 172 Messages postés dimanche 10 décembre 2000Date d'inscription 12 février 2009 Dernière intervention - 10 mai 2008 à 20:40
0
Merci
Bonsoir JF,
Et comment peut-on y remédier si il s'agit de cela?
J'ai essayé de le compiler sur une autre bécane sous DevC++ :
    Mêmes erreurs à la compilation

Cordialement,[Insert_Emoticon%28%27/imgs2/smile.gif%27%29; ]
             Bastien
 
Commenter la réponse de BastienL21
BastienL21 172 Messages postés dimanche 10 décembre 2000Date d'inscription 12 février 2009 Dernière intervention - 10 mai 2008 à 20:56
0
Merci
Bonsoir,
Je compile en C, j'essaye et je vous tiens au courant

Cordialement,[Insert_Emoticon%28%27/imgs2/smile.gif%27%29; ]
             Bastien
 
Commenter la réponse de BastienL21
BastienL21 172 Messages postés dimanche 10 décembre 2000Date d'inscription 12 février 2009 Dernière intervention - 10 mai 2008 à 20:59
0
Merci
Merci beaucoup de vous être interressé à mon "problème", ca fonctionne!

Cordialement,[Insert_Emoticon%28%27/imgs2/smile.gif%27%29; ]
             Bastien
 
Commenter la réponse de BastienL21
BastienL21 172 Messages postés dimanche 10 décembre 2000Date d'inscription 12 février 2009 Dernière intervention - 10 mai 2008 à 21:08
0
Merci
Tout de même bizard car je n'ai pas besoin de mettre struct pour pTM mais bon maintenant que je le sais...
Encore merci

Cordialement,[Insert_Emoticon%28%27/imgs2/smile.gif%27%29; ]
             Bastien
 
Commenter la réponse de BastienL21
cs_jfrancois 482 Messages postés vendredi 26 août 2005Date d'inscription 5 décembre 2009 Dernière intervention - 10 mai 2008 à 21:17
0
Merci
struct tm* pTM = ...



pTM est le nom du pointeur de type "structure tm", il n'y a pas besoin d'autre struct !

Bonne horloge !

Jean-François
Commenter la réponse de cs_jfrancois
BastienL21 172 Messages postés dimanche 10 décembre 2000Date d'inscription 12 février 2009 Dernière intervention - 10 mai 2008 à 21:21
0
Merci
D'accord, merci beaucoup.
Il ne me reste plus qu'à modifier mon programme, ce qui risque de me pendre du temps...(+ ou - 3000 lignes) et de ne pas être pas très agréable sur un écran d'à peine 15".
bref. bonne soirée à tous

Cordialement,[Insert_Emoticon%28%27/imgs2/smile.gif%27%29; ]
             Bastien
 
Commenter la réponse de BastienL21

Vous n'êtes pas encore membre ?

inscrivez-vous, c'est gratuit et ça prend moins d'une minute !

Les membres obtiennent plus de réponses que les utilisateurs anonymes.

Le fait d'être membre vous permet d'avoir un suivi détaillé de vos demandes et codes sources.

Le fait d'être membre vous permet d'avoir des options supplémentaires.