Page 1 sur 1
[Résolu] Comparer 2 dates
Publié : sam. 14/nov./2015 7:02
par Micoute
Bonjour à tous,
j'aimerais savoir, comment on peut comparer 2 dates pour voir si elles plus grandes ou plus petites, enfin vous m'avez compris.
je vous remercie par anticipation pour votre aide.
Re: Comparer 2 dates
Publié : sam. 14/nov./2015 8:50
par Kwai chang caine
Pour savoir si une date est plus grande que l'autre, ou les comparer, ce ne doit pas être trop compliqué.
Car en lisant la doc tu t'apercois que le chiffre obtenu avec l'instruction Date () est un nombre grandissant par rapport aux secondes écoulés
www.purebasic.com/french/documentation/date/index.html
Re: Comparer 2 dates
Publié : sam. 14/nov./2015 10:40
par MLD
Salut Micoute
Regarde ceci
Code : Tout sélectionner
;Calcul du nombre de jours par rapport au premier janvier de la date
Procedure nbjanvier(ldate.s)
nbmois.s = "0,31,59,90,120,151,181,212,243,273,304,334"
j =Val( StringField(ldate,1,"/"))
m = Val(StringField(ldate,2,"/"))
a = Val(StringField(ldate,3,"/"))
nbjanvier =Val(StringField(nbmois,m,",") )+ j - 1
If (bissextile(a) And m > 2)
nbjanvier = nbjanvier + 1
EndIf
ProcedureReturn nbjanvier
EndProcedure
;Calcul du nombre de jours entre deux dates
Procedure nbjour(date1.s, date2.s)
nbjour = nbjourannee(date1.s, date2.s) - nbjanvier(date1.s) + nbjanvier(date2.s)
ProcedureReturn nbjour
EndProcedure
;Exemple d utilisation :
Debug " Le nombre de jours entre les deux dates est : " +Str( nbjour("1/1/2010","16/1/2010"))
Re: Comparer 2 dates
Publié : sam. 14/nov./2015 11:08
par Marc56
Bonjour Micoute,
Dans beaucoup d'OS (DOS, Windows) la date est stockée (y compris dans le BIOS) comme un nombre qui représente les secondes écoulées depuis le 1° janvier 1970.
(C'est pour cela qu'une carte mère plus alimentée et qui n'a plus de pile revient (souvent) au 01/01/1970)
Tous les environnement de programmation ont des fonctions pour convertir cette date dans un sens et dans l'autre.
En PB,
Parsedate pour convertir la date lisible en un nombre
http://www.purebasic.com/french/documen ... edate.html
Puis tu fais une simple soustraction des deux nombres.
Formatdate pour faire l’opération inverse
http://www.purebasic.com/french/documen ... tdate.html
Pas besoin de t'occuper des années bissextiles, tout est prévu.

Re: Comparer 2 dates
Publié : sam. 14/nov./2015 14:40
par Micoute
Ok, merci beaucoup à tous, pour ces renseignements qui me sont bien utiles.
Re: [Résolu] Comparer 2 dates
Publié : sam. 14/nov./2015 19:45
par Fig
Tu peux comparer les valeurs retournées par ParseDate("%yy/%mm/%dd", "10/01/07").
Code : Tout sélectionner
If ParseDate("%yy/%mm/%dd", "11/01/15")>ParseDate("%yy/%mm/%dd", "10/01/15")
Debug "la premiere date est plus grande"
Else
Debug "la premiere date est plus petite"
EndIf
Re: [Résolu] Comparer 2 dates
Publié : dim. 15/nov./2015 7:55
par Micoute
Bonjour Fig, ce serait bien génial si la situation se présenterait toujours comme ça.
En fait, je veux faire une liste de rendez-vous où chaque rendez-vous doit s'afficher si la date du dit rendez-vous est dans le futur par rapport à aujourd'hui.
Grand merci tout de même pour ton astuce qui en fait va me servir aussi.
Re: [Résolu] Comparer 2 dates
Publié : dim. 15/nov./2015 9:25
par Marc56
Micoute a écrit :En fait, je veux faire une liste de rendez-vous où chaque rendez-vous doit s'afficher si la date du dit rendez-vous est dans le futur par rapport à aujourd'hui.
1. Tu transformes toutes tes dates ET la date du jour en un numéro avec Parsedate()
2. Toutes les dates dont le numéro est
supérieur au
numéro de la date du jour sont donc dans le futur.
Avec la fonction AddDate(), tu peux même n'afficher par exemple que ceux qui ont lieu la semaine prochaine.
http://www.purebasic.com/french/documen ... ddate.html
Toutes les fonctions liées à la date
http://www.purebasic.com/french/documen ... index.html
Même les tableurs travaillent avec la date en format 'secondes depuis 1970', la conversion n'est faite que pour l'affichage utilisateur.
Maintenant, si tu veux te faire un système de gestion de RDV simple, deux méthodes:
- Stocker les données dans un fichier texte, alors le mieux est de mettre la date en début de ligne et au format AAAAMMJJ-HHMMSS , cela permet de lire le fichier simplement avec un éditeur de texte. En plus, cela permet de classer les RDV par date dans un tableur ou avec un éditeur de texte.
ou
- Stocker les données dans une base de données en utilisant le champs date. Celui-ci permet ensuite de faire des calculs de date automatiquement.

Re: [Résolu] Comparer 2 dates
Publié : dim. 15/nov./2015 9:37
par Fig
Je ne vois pas quel est le probleme du coup.
Tu stock tous tes rendez vous en format numérique, ce qui te permet d'en trier l'affichage.
Quand tu dois les afficher, tu leurs donne le format string de ton choix avec formatdate()
Code : Tout sélectionner
NewList Rendezvous.i()
;créer 20 date de rendez vous avant ou apres la date du jour
For i=1 To 20
AddElement(Rendezvous())
If Random(2)>1
Rendezvous()=Date()+Random(10)*100000 ;ou
Else
Rendezvous()=Date()-Random(10)*100000
EndIf
Next i
;trie les rendez vous dans l'ordre chronologique
SortList(Rendezvous(),0) ;en option
;affiche seulement les rendez vous dans le futur
ForEach Rendezvous()
If Rendezvous()>=Date()
Debug FormatDate("%dd/%mm/%yyyy",Rendezvous())
EndIf
Next
>Marc a été plus rapide que moi...
Re: [Résolu] Comparer 2 dates
Publié : dim. 15/nov./2015 17:57
par Micoute
Ok, mais les deux sont bons et compatibles, alors merci à tous les deux.