[Résolu] Comparer 2 dates
[Résolu] Comparer 2 dates
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.
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.
Dernière modification par Micoute le sam. 14/nov./2015 14:41, modifié 1 fois.
Microsoft Windows 10 Famille 64 bits : Carte mère : ASRock 970 Extreme3 R2.0 : Carte Graphique NVIDIA GeForce RTX 3080 : Processeur AMD FX 6300 6 cœurs 12 threads 3,50 GHz PB 6.20 LTS (x64)
Un homme doit être poli, mais il doit aussi être libre !
Un homme doit être poli, mais il doit aussi être libre !
- Kwai chang caine
- Messages : 6989
- Inscription : sam. 23/sept./2006 18:32
- Localisation : Isere
Re: Comparer 2 dates
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
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
Salut Micoute
Regarde ceci
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
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.

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
Ok, merci beaucoup à tous, pour ces renseignements qui me sont bien utiles.
Microsoft Windows 10 Famille 64 bits : Carte mère : ASRock 970 Extreme3 R2.0 : Carte Graphique NVIDIA GeForce RTX 3080 : Processeur AMD FX 6300 6 cœurs 12 threads 3,50 GHz PB 6.20 LTS (x64)
Un homme doit être poli, mais il doit aussi être libre !
Un homme doit être poli, mais il doit aussi être libre !
Re: [Résolu] Comparer 2 dates
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
Il y a deux méthodes pour écrire des programmes sans erreurs. Mais il n’y a que la troisième qui marche.
Version de PB : 6.00LTS - 64 bits
Version de PB : 6.00LTS - 64 bits
Re: [Résolu] Comparer 2 dates
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.
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.
Microsoft Windows 10 Famille 64 bits : Carte mère : ASRock 970 Extreme3 R2.0 : Carte Graphique NVIDIA GeForce RTX 3080 : Processeur AMD FX 6300 6 cœurs 12 threads 3,50 GHz PB 6.20 LTS (x64)
Un homme doit être poli, mais il doit aussi être libre !
Un homme doit être poli, mais il doit aussi être libre !
Re: [Résolu] Comparer 2 dates
1. Tu transformes toutes tes dates ET la date du jour en un numéro avec Parsedate()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.
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
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()
>Marc a été plus rapide que moi...
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
Il y a deux méthodes pour écrire des programmes sans erreurs. Mais il n’y a que la troisième qui marche.
Version de PB : 6.00LTS - 64 bits
Version de PB : 6.00LTS - 64 bits
Re: [Résolu] Comparer 2 dates
Ok, mais les deux sont bons et compatibles, alors merci à tous les deux.
Microsoft Windows 10 Famille 64 bits : Carte mère : ASRock 970 Extreme3 R2.0 : Carte Graphique NVIDIA GeForce RTX 3080 : Processeur AMD FX 6300 6 cœurs 12 threads 3,50 GHz PB 6.20 LTS (x64)
Un homme doit être poli, mais il doit aussi être libre !
Un homme doit être poli, mais il doit aussi être libre !