Bienvenue aux nouveaux arrivants sur FantasPic !

- Pensez à lire les règles durant votre visite, il n'y en a pas beaucoup, mais encore faut-il les respecter .
- N’hésitez pas à faire des remarques et/ou suggestions sur le Forum, dans le but de l'améliorer et de rendre vos prochaines visites plus agréables.
- Vous pouvez regarder votre "panneau de l'utilisateur" afin de configurer vos préférences.
- Un passage par "l'utilisation du forum" est recommandé pour connaître les fonctionnalités du forum.

--- L’équipe FantasPic ---
Forum général sur le langage C !

Modérateur : Jérémy

Trouver l'écart entre deux dates !
Jérémy
Administrateur du site
Administrateur du site
Messages : 2725
Âge : 45
Enregistré en : juillet 2015
Localisation : Dans le sud
Contact :

#61 Message par Jérémy » lun. 19 sept. 2016 20:11

Merci Claudius pour ces précisions de haut niveau .

J'ai appris du coup l'opérateur ternaire Merci ! .
Comme je n'en suis qu'a mes débuts, je trouve pas très lisible cette écriture. J'avoue être plus à l'aise avec mes else if, disons que ca me parle plus !.
Et j'avoue que ça doit réduire considérablement le code
C'est en faisant des erreurs, que l'on apprend le mieux !!!

Trouver l'écart entre deux dates !
Claudius
Avatar de l’utilisateur
Passionné
Passionné
Messages : 260
Âge : 69
Enregistré en : septembre 2015
Localisation : ELANCOURT (78 - YVELINES)
Contact :

#62 Message par Claudius » lun. 19 sept. 2016 20:45

Bonsoir,
@Jérémy: Comme je n'en suis qu'a mes débuts, je trouve pas très lisible cette écriture. J'avoue être plus à l'aise avec mes else if, disons que ça me parle plus !.

Question d'habitude...
@Jérémy: Et j'avoue que ça doit réduire considérablement le code

Non, pas du tout, le compilateur le transcrit en un ... if .. else, cela s'appelle de la glu syntaxique que tous les langages de haut niveau ont adopté :-)

Content de t'avoir appris cette syntaxe que j'utilise quotidiennement depuis des lustres en C, C++, Java et j'en passe et des meilleurs ...

Trouver l'écart entre deux dates !
Jérémy
Administrateur du site
Administrateur du site
Messages : 2725
Âge : 45
Enregistré en : juillet 2015
Localisation : Dans le sud
Contact :

#63 Message par Jérémy » mar. 20 sept. 2016 19:07

Bonsoir,

Voici mon code fini et fonctionnel pour la partie calcul de la différence entre deux dates ;
Le Gdh ( groupe Date Heure) c'est l'heure de mon module apres lecture
Le SMS_recu , c'est l'heure lu pour le réveil dans le SMS

Je calcul leur durée en seconde depuis 1970
Et je fais la différence des deux !

Puis j'injecte cette différence comme valeur de mon chrono, étant donné quelle est déjà en seconde.
Plus de probléme d'année bissextile , de mois a 31 ou 30 jours et autres difficultés avec les calendriers.

Code : Tout sélectionner

              // remplissage des structures
              
ts1.ss = (((Gdh[15])-48)*10)+(((Gdh[16])-48));
              
ts1.mn = (((Gdh[12])-48)*10)+(((Gdh[13])-48));
              
ts1.hh = (((Gdh[9])-48)*10)+(((Gdh[10])-48));
              
ts1.md = (((Gdh[6])-48)*10)+(((Gdh[7])-48));
              
ts1.mo = (((Gdh[3])-48)*10)+(((Gdh[4])-48));
              
ts1.yy 2000 + ((((Gdh[0])-48)*10)+(((Gdh[1])-48))) ;

              
ts2.ss = (((SMS_Recu[22])-48)*10)+(((SMS_Recu[23])-48)) ;
              
ts2.mn = (((SMS_Recu[19])-48)*10)+(((SMS_Recu[20])-48)) ;
              
ts2.hh = (((SMS_Recu[16])-48)*10)+(((SMS_Recu[17])-48)) ;
              
ts2.md = (((SMS_Recu[7])-48)*10)+(((SMS_Recu[8])-48)) ;
              
ts2.mo = (((SMS_Recu[10])-48)*10)+(((SMS_Recu[11])-48)) ;
              
ts2.yy 2000 + ((((SMS_Recu[13])-48)*10)+(((SMS_Recu[14])-48)))  ;

              
// calcul du temps
              
epoch1 =Time_dateToEpoch(&ts1) ;
              
epoch2 Time_dateToEpoch(&ts2) ;
              
diff epoch2 epoch1 


Voici le message que je me renvoie après reception du mot clé :

Code : Tout sélectionner

               case 7:{
                         
UART1_Write_Text("Réveil reglé\r\n");
                         
UART1_Write_Text("le : "); // écrit la date du reveil
                         
UART1_Write(SMS_Recu[13]);
                         
UART1_Write(SMS_Recu[14]);
                         
UART1_Write_Text("\/");
                         
UART1_Write(SMS_Recu[10]);
                         
UART1_Write(SMS_Recu[11]);
                         
UART1_Write_Text("\/");
                         
UART1_Write(SMS_Recu[7]);
                         
UART1_Write(SMS_Recu[8]);
                         
UART1_Write_Text("\r\n");
                         
UART1_Write_Text("a  : ");  // écrit l'heure du reveil
                         
for (i=16;i<24;i++)
                             {
                               
UART1_Write(SMS_Recu[i]);
                             }
                             
i=0;
                         
UART1_Write_Text("\r\n\r\n");
                         
                         
UART1_Write_Text("Voulez-vous le lancer ?");
                         break;
                       } 
C'est en faisant des erreurs, que l'on apprend le mieux !!!

Trouver l'écart entre deux dates !
Guest
Confirmé
Confirmé
Messages : 800
Enregistré en : mars 2017

#64 Message par Guest » mar. 20 sept. 2016 19:44

Tres bien . Tu n'es pas passé par la fonction "diff(tm1,tm2)"; , tu aurais du :wink: .
Plus de probléme d'année bissextile , de mois a 31 ou 30 jours et autres difficultés avec les calendriers.
c'est sur c'est la fonction Time_dateToEpoch qui le fait pour toi mais il y a un prix a cela
Reste plus qu'a remplacer, Time_dateToEpoch est c'est parfait.


Retourner vers « Langage C »

Qui est en ligne

Utilisateurs parcourant ce forum : Aucun utilisateur enregistré et 39 invités