IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Bases de données Delphi Discussion :

Comparer deux dates en delphi


Sujet :

Bases de données Delphi

  1. #1
    Membre du Club
    Inscrit en
    Janvier 2009
    Messages
    129
    Détails du profil
    Informations forums :
    Inscription : Janvier 2009
    Messages : 129
    Points : 52
    Points
    52
    Par défaut Comparer deux dates en delphi
    Je suis à la recherche d'une solution qui est: comment comparer le jour le mois ,l'année entre deux dates?
    Prenons comme exemple:05/02/2003 et 03/02/2003 ou 07/04/2005 et 05/04/2007.Dire maintenant que le premier est inférieur au deuxième ou deuxième est supérieur au premier en delphi?
    Si le premier est inférieur au deuxième, il t'affiche un message sinon il continue.
    Merci de votre compréhension.
    Par Zizou7.

  2. #2
    Fxg
    Fxg est déconnecté
    Membre éclairé
    Homme Profil pro
    ingénieur financier
    Inscrit en
    Septembre 2003
    Messages
    510
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Alpes Maritimes (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : ingénieur financier

    Informations forums :
    Inscription : Septembre 2003
    Messages : 510
    Points : 837
    Points
    837
    Par défaut
    En utilisant

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    functionCompareDate(constA,B:TDateTime):TValueRelationship;

  3. #3
    Membre du Club
    Inscrit en
    Janvier 2009
    Messages
    129
    Détails du profil
    Informations forums :
    Inscription : Janvier 2009
    Messages : 129
    Points : 52
    Points
    52
    Par défaut Comparaison entre deux dates
    La fonction que vous venez d'écrire est incomplète.
    Si vous pouvez éclaircir vos idées, ce serait mieux

    Merci par avance.
    Zizou7.

  4. #4
    Fxg
    Fxg est déconnecté
    Membre éclairé
    Homme Profil pro
    ingénieur financier
    Inscrit en
    Septembre 2003
    Messages
    510
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Alpes Maritimes (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : ingénieur financier

    Informations forums :
    Inscription : Septembre 2003
    Messages : 510
    Points : 837
    Points
    837
    Par défaut
    La fonction n'est pas incomplète, par contre un petit appui sur F1 te permettrait d'avancer

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    procedure TForm1.SpeedButton1Click(Sender: TObject);
    var  Date1, Date2 : TDateTime;
    begin
    Date1 := Now;
    Date2 := IncDay(Date1, 50);
    showmessage(inttostr(compareDate(Date1,Date2)));
    end;
    Retourne -1 si Date1<Date2
    Retourne 1 si Date1>Date2
    Retourne 0 si égalité

  5. #5
    Expert éminent sénior
    Avatar de Cl@udius
    Homme Profil pro
    Développeur Web
    Inscrit en
    Février 2006
    Messages
    4 878
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 61
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : Développeur Web
    Secteur : High Tech - Matériel informatique

    Informations forums :
    Inscription : Février 2006
    Messages : 4 878
    Points : 10 008
    Points
    10 008
    Par défaut
    Salut

    Les opérateurs relationnels (qui sont: >, <, >= et <=) fonctionnent très bien avec des dates/heures (TDateTime, TDate et TTime).

    Si tu as 2 dates D1 et D2 et veux renvoyer un message si D1 est inférieur à D2, il suffit de faire:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
     
      if D1 < D2 then
        ShowMessage('La date D1 est inférieure à la date D2.');
    Bien sûr CompareDate fonctionne tout aussi bien, mais dans le cas présent inutile de passer par une fonction pour en évaluer le résultat, autant comparer directement les dates.

    @+ Claudius

  6. #6
    Fxg
    Fxg est déconnecté
    Membre éclairé
    Homme Profil pro
    ingénieur financier
    Inscrit en
    Septembre 2003
    Messages
    510
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Alpes Maritimes (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : ingénieur financier

    Informations forums :
    Inscription : Septembre 2003
    Messages : 510
    Points : 837
    Points
    837
    Par défaut
    merci claudius je le rajoute dans un coin de ma tête.

  7. #7
    Membre du Club
    Inscrit en
    Janvier 2009
    Messages
    129
    Détails du profil
    Informations forums :
    Inscription : Janvier 2009
    Messages : 129
    Points : 52
    Points
    52
    Par défaut Comparaison entre deux dates
    J'ai compris vos reponses,mais il suffit que le jour de la date1 soit soit inferieur au jour de la date2 pour t'afficher le même message.
    Exemple: 02/08/2008 et 03/09/2009.
    Si tu mets if (07/08/2008)<(03/09/2009) Then
    Showmessage('La date1 est inferieure à la date2');
    Il te dira que la date2 est inferieure à la date1. Verifiez.
    Merci par avance.

  8. #8
    Expert éminent sénior
    Avatar de Cl@udius
    Homme Profil pro
    Développeur Web
    Inscrit en
    Février 2006
    Messages
    4 878
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 61
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : Développeur Web
    Secteur : High Tech - Matériel informatique

    Informations forums :
    Inscription : Février 2006
    Messages : 4 878
    Points : 10 008
    Points
    10 008
    Par défaut
    Citation Envoyé par Zizou7 Voir le message
    Verifiez.
    Avant de nous demander de vérifier si tu nous donnais ton code qui ne fonctionne pas.

  9. #9
    Rédacteur/Modérateur

    Avatar de SergioMaster
    Homme Profil pro
    Développeur informatique retraité
    Inscrit en
    Janvier 2007
    Messages
    15 031
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 67
    Localisation : France, Loire Atlantique (Pays de la Loire)

    Informations professionnelles :
    Activité : Développeur informatique retraité
    Secteur : Industrie

    Informations forums :
    Inscription : Janvier 2007
    Messages : 15 031
    Points : 40 930
    Points
    40 930
    Billets dans le blog
    62
    Par défaut
    Citation Envoyé par Zizou7 Voir le message
    J
    Si tu mets if (07/08/2008)<(03/09/2009) Then
    Showmessage('La date1 est inferieure à la date2');
    Il te dira que la date2 est inferieure à la date1.
    ça jusqu'à ce qu'on me prouve le contraire ce n'est pas des dates

    07/08/2009 = 0.0004357
    03/09/2009 = 0.0001659

    date1:=encodedate(2009,8,7)
    date2:=encodedate(2009,9,3)

    if date1<date 2 then .....
    donnera la bonne réponse c'est a dire date1 inférieure a date2
    MVP Embarcadero
    Delphi installés : D3,D7,D2010,XE4,XE7,D10 (Rio, Sidney), D11 (Alexandria), D12 (Athènes)
    SGBD : Firebird 2.5, 3, SQLite
    générateurs États : FastReport, Rave, QuickReport
    OS : Window Vista, Windows 10, Windows 11, Ubuntu, Androïd

  10. #10
    Fxg
    Fxg est déconnecté
    Membre éclairé
    Homme Profil pro
    ingénieur financier
    Inscrit en
    Septembre 2003
    Messages
    510
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Alpes Maritimes (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : ingénieur financier

    Informations forums :
    Inscription : Septembre 2003
    Messages : 510
    Points : 837
    Points
    837
    Par défaut
    Ce qui avait été bien précisé par Claudius dans son message et dans mon code

    Les opérateurs relationnels (qui sont: >, <, >= et <=) fonctionnent très bien avec des dates/heures (TDateTime, TDate et TTime).
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    var  Date1, Date2 : TDateTime;
    Toujours bien lire les réponses

  11. #11
    Membre éprouvé Avatar de BuzzLeclaire
    Homme Profil pro
    Dev/For/Vte/Ass
    Inscrit en
    Août 2008
    Messages
    1 606
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Dev/For/Vte/Ass

    Informations forums :
    Inscription : Août 2008
    Messages : 1 606
    Points : 1 113
    Points
    1 113
    Par défaut
    Citation Envoyé par Zizou7 Voir le message
    J'ai compris vos reponses,mais il suffit que le jour de la date1 soit soit inferieur au jour de la date2 pour t'afficher le même message.
    Exemple: 02/08/2008 et 03/09/2009.
    Si tu mets if (07/08/2008)<(03/09/2009) Then
    Showmessage('La date1 est inferieure à la date2');
    Il te dira que la date2 est inferieure à la date1. Verifiez.
    Merci par avance.
    Tu confont date et Text !!!

    Utilise la proposition de Sergio pour le type date, sinon si tu garde du texte , il faut commencer à l'envers. (anglais)

    if '2008/08/07' < '2009/09/03' then

    Et comme le dit claudius donne ton code qui marche pas... parceque les dates sous delphi ya aucun probleme..


  12. #12
    Candidat au Club
    Inscrit en
    Mai 2010
    Messages
    4
    Détails du profil
    Informations forums :
    Inscription : Mai 2010
    Messages : 4
    Points : 4
    Points
    4
    Par défaut
    Salut tout le monde ,j'essayer la fonction comparedate mais il me repond toujours que la fonction n'est pas reconue!,merci de me dire quel est le pb.

  13. #13
    Expert éminent sénior
    Avatar de ShaiLeTroll
    Homme Profil pro
    Développeur C++\Delphi
    Inscrit en
    Juillet 2006
    Messages
    13 447
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 42
    Localisation : France, Seine Saint Denis (Île de France)

    Informations professionnelles :
    Activité : Développeur C++\Delphi
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Juillet 2006
    Messages : 13 447
    Points : 24 849
    Points
    24 849
    Par défaut
    Il faut ajouter DateUtils dans les "uses" pour bénéficier de CompareDate

    si cela ne fonctionne toujours pas, tu as peut-être un Delphi trop ancien (genre 1 à 3), pense que des TDateTime, cela se compare avec une simple soustration ou comparaison via > ou <

    si cela corrige ton problème, avant de vouloir utiliser des fonctions, tu devrais peut-être approfondir les bases du langage :
    Guide Pascal et Delphi
    V. Préliminaires
    V-C. Structure d'un programme Pascal
    V-C-1. Structure d'un fichier projet
    et V-C-2. Structure d'une unité
    Aide via F1 - FAQ - Guide du développeur Delphi devant un problème - Pensez-y !
    Attention Troll Méchant !
    "Quand un homme a faim, mieux vaut lui apprendre à pêcher que de lui donner un poisson" Confucius
    Mieux vaut se taire et paraître idiot, Que l'ouvrir et de le confirmer !
    L'ignorance n'excuse pas la médiocrité !

    L'expérience, c'est le nom que chacun donne à ses erreurs. (Oscar Wilde)
    Il faut avoir le courage de se tromper et d'apprendre de ses erreurs

  14. #14
    Candidat au Club
    Inscrit en
    Mai 2010
    Messages
    4
    Détails du profil
    Informations forums :
    Inscription : Mai 2010
    Messages : 4
    Points : 4
    Points
    4
    Par défaut
    ça fonctionne trés bien merci pour votre aide

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. Comment comparer deux dates
    Par vodevil dans le forum Modules
    Réponses: 6
    Dernier message: 01/09/2005, 18h24
  2. comparer deux dates
    Par adel25 dans le forum C++
    Réponses: 3
    Dernier message: 23/08/2005, 20h29
  3. Comparer deux dates
    Par LoicH dans le forum C++Builder
    Réponses: 4
    Dernier message: 04/03/2005, 22h53
  4. comment comparer deux dates?
    Par billoum dans le forum C++Builder
    Réponses: 2
    Dernier message: 21/08/2004, 21h08

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo