Forum |  HardWare.fr | News | Articles | PC | S'identifier | S'inscrire | Shop Recherche
773 connectés 

  FORUM HardWare.fr
  Programmation
  C

  [C] Comparer des dates facilement

 


 Mot :   Pseudo :  
 
Bas de page
Auteur Sujet :

[C] Comparer des dates facilement

n°1061561
sbucci2
Posté le 26-04-2005 à 16:53:21  profilanswer
 

Bonjour,
 
Me revoila avec un autre probleme !!!
Comment puis je faire pour comparer des dates au format dd-mmm-yyyy, ex: 10-jan-2004 facilement ?
 
Merci d'avance
Seb

mood
Publicité
Posté le 26-04-2005 à 16:53:21  profilanswer
 

n°1061574
Freeman656
Posté le 26-04-2005 à 16:58:22  profilanswer
 

Je pense que le plus simple serait de creer une structure Date et un type enuméré pour les mois.
Ca te permet de faire des comparaisons sur les mois


Message édité par Freeman656 le 26-04-2005 à 16:59:11
n°1061576
cesarr89
Posté le 26-04-2005 à 16:59:46  profilanswer
 

Structure +1

n°1061581
Elmoricq
Modérateur
Posté le 26-04-2005 à 17:02:22  profilanswer
 

Plutôt que de créer une nouvelle structure, j'utiliserais plutôt struct tm, ce qui me permettrait en plus de convertir ça très facilement en secondes (écoulées depuis le 01/01/1970) => idéal pour les comparaisons.
 
Regarde ce que time.h a à t'offrir.


Message édité par Elmoricq le 26-04-2005 à 17:03:39
n°1061585
Sve@r
Posté le 26-04-2005 à 17:04:21  profilanswer
 

sbucci2 a écrit :

Bonjour,
 
Me revoila avec un autre probleme !!!
Comment puis je faire pour comparer des dates au format dd-mmm-yyyy, ex: 10-jan-2004 facilement ?
 
Merci d'avance
Seb


 
Tout d'abord, si tu te trouves sur un Unix ou équivalent, ben les dates sont stockées en interne en secondes écoulées depuis le 1/1/1970.  
 
Et maintenant une page de pub: Ce codage simple sur un entier long signé (31 bits significatifs) permettra au système d'atteindre sans soucis l'an 2034 avant que ne se pose le pb de sa remise à 0 (équivalent au bug de l'an 2000). Mais déjà les programmeurs Linux se penchent sur un codage sur 63 ou 64 bits qui permettra au système d'atteindre la mort du soleil (zavez qu'à faire le calcul si vous ne me croyez pas).
 
Donc, si tes dates sont codées en interne comme cela (même si elles sont affichées sous la forme dd-mmm-yyyy), pas de pb de comparaison. Tu ne compares que 2 entiers.
 
Maintenant, si tu travailles sur un autre SE où tes dates sont codées en interne tel que tu le montres, alors t'as pas 36 solutions. Tu dois extraire de tes dates l'année, le mois et le jour, puis comparer les deux années, si elles sont égales comparer les deux mois et finir par les jours si les mois sont égaux.


---------------
Vous ne pouvez pas apporter la prospérité au pauvre en la retirant au riche.
n°1061593
sbucci2
Posté le 26-04-2005 à 17:08:17  profilanswer
 

Je fais un outil qui analyse des fichiers de log (C + GTK). La date de ces fichiers est dans le nom du fichier et sous la forme sitée précédement.
 
J'ai vu qu'il y a un time.h pour le C. Des moyens d'utiliser cela.
 
Merci encore

n°1061595
Elmoricq
Modérateur
Posté le 26-04-2005 à 17:08:43  profilanswer
 

Citation :

Maintenant, si tu travailles sur un autre SE où tes dates sont codées en interne tel que tu le montres, alors t'as pas 36 solutions. Tu dois extraire de tes dates l'année, le mois et le jour, puis comparer les deux années, si elles sont égales comparer les deux mois et finir par les jours si les mois sont égaux.


 
?!
 
mktime() convertit toujours une date en nombre de secondes écoulées depuis le 01/01/1970, quel que soit le système utilisé.
 
C'est pas un truc Unix, c'est un truc C.
 
 
@sbucci2 > Regarde la struct tm, renseigne-là et utilise mktime() pour convertir une date en secondes. A partir de là, tu auras tes dates sous forme d'entier, ce qui pour comparer est on ne peut plus simple.


Message édité par Elmoricq le 26-04-2005 à 17:10:39
n°1061628
sbucci2
Posté le 26-04-2005 à 17:31:57  profilanswer
 

va pour le mktime alors.
 
Merci

n°1061681
Sve@r
Posté le 26-04-2005 à 18:20:11  profilanswer
 

Elmoricq a écrit :

mktime() convertit toujours une date en nombre de secondes écoulées depuis le 01/01/1970, quel que soit le système utilisé.
 
C'est pas un truc Unix, c'est un truc C.


Exact ! J'aurais du y penser !!! Il suffit juste d'avoir une variable "var" de type "struct tm" et remplir les membres "tm_mday", "tm_mon" et "tm_year" avec les bonnes valeurs puis d'appeler "mktime(&var)" => Ca renvoie le nb de secondes correspondant.
Attention pour "tm_year" car je crois qu'il considère que le début est "1900". C'est à dire que si on veut référencer l'année "2005", il faut rentrer "105" dans "tm_year" !!!


---------------
Vous ne pouvez pas apporter la prospérité au pauvre en la retirant au riche.
n°1061795
Emmanuel D​elahaye
C is a sharp tool
Posté le 26-04-2005 à 19:50:33  profilanswer
 

sbucci2 a écrit :


Comment puis je faire pour comparer des dates au format dd-mmm-yyyy, ex: 10-jan-2004 facilement ?


Convertir en 'struct tm', puis utiliser diffdate(). C'est du standard (bien lire la doc). Sinon, adopter (ou convertir dans) le format international : YYYY-MM-DD ou  YYYYMMDD. strcmp() peut alors être utilisé.


---------------
Des infos sur la programmation et le langage C: http://www.bien-programmer.fr Pas de Wi-Fi à la maison : http://www.cpl-france.org/
mood
Publicité
Posté le 26-04-2005 à 19:50:33  profilanswer
 

n°1062007
Elmoricq
Modérateur
Posté le 26-04-2005 à 23:23:16  profilanswer
 

Ah tiens, je ne connaissais pas diffdate().
 
Par contre je suis une nouille de pas avoir pensé au format international : je l'utilise tout le temps, justement pour des raisons de tri. Impardonnable.


Aller à :
Ajouter une réponse
  FORUM HardWare.fr
  Programmation
  C

  [C] Comparer des dates facilement

 

Sujets relatifs
comparer 2 fichier excelManipuler dates de modification/créatio
comment comparer deux listes?? [autre question...]problemes de dates
lien html special fichiers datésComparer date SQL/Date du jour
[MySql - Access] Problèmes de dates[SQL] Calcul sur des dates et heure
comment faire pour comparer une date a la date d'aujourd'huiComparer et trier pixel selon la valeur RGB
Plus de sujets relatifs à : [C] Comparer des dates facilement


Copyright © 1997-2022 Hardware.fr SARL (Signaler un contenu illicite / Données personnelles) / Groupe LDLC / Shop HFR