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

 Delphi Discussion :

Calcul différence entre deux dates d'une même année (en nombre de jours)


Sujet :

Delphi

  1. #1
    Membre du Club
    Homme Profil pro
    Inscrit en
    Octobre 2006
    Messages
    74
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Tarn et Garonne (Midi Pyrénées)

    Informations professionnelles :
    Secteur : Services à domicile

    Informations forums :
    Inscription : Octobre 2006
    Messages : 74
    Points : 50
    Points
    50
    Par défaut Calcul différence entre deux dates d'une même année (en nombre de jours)
    Bonsoir à tous

    Sous Delphi 7, j'essaye de calculer l'écart entre 2 dates d'une même (mais en format Date - type (jour et moi seulement, sans l'année) ex :18 avril).
    En clair, je voudrais par exemple que la différence entre les dates : 28 avril - 18 avril (renvoie comme résultat 10)

    Pour effectuer le calcul de l'écart, j'utilise un DateTimePicker pour la date du jour et la différence doit se faire depuis une date que je récupère dans un stringgrid et stocké dans des TEdit et la fonction DaysBetween

    Dans mon code ci-après, les dates sont bien récupérées mais le calcul ne s'effectue pas.
    Le compilateur ne renvoie aucune erreur mais lorsque je clique sur le bouton dans mon programme, ça plante et l'erreur "n'est pas une date correcte" s'affiche.
    Le problème se situe dans les TEdit : DateFiche1 et EditJour

    Sans doute que l’interprétation de la fonction DaysBeetween doit poser problème sans la variable "Annee" et j'aimerai savoir comment contourner cela.

    A vous lire pour votre aide
    Merci

    Cordialement
    Beauserge


    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    procedure TForm1.Button1Click(Sender: TObject);
    var
    DateJourBase: String;
    D1: TDateTime;
    E1: Extended;
     
    begin
    DateTimePicker3.Date:=now;  // date du jour
    EditJour.text:=FormatDateTime('dd mmmm', DateTimePicker3.Date); // formatage date (ex : 18 avril)
    DateJourBase:=EditJour.text;
     
    // récupération date dans stringgrid
    DateFiche1.text:=StringGrid1.Cells[0,9];
     
    D1:=StrToDate(DateFiche1.text);
    E1 := DaysBetween(StrToDate(DateJourBase),D1);
     
    // affichage des écarts dans les Edits Ecarts Fiches
    EcartF1.Text:=FloatToStr(E1);
     
    end;

  2. #2
    Rédacteur/Modérateur

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

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

    Informations forums :
    Inscription : Janvier 2007
    Messages : 15 196
    Points : 41 428
    Points
    41 428
    Billets dans le blog
    63
    Par défaut
    Bonjour,

    Tôt le matin, je ne comprends pas bien le code , surtout sans savoir concrètement ce qui est saisi dans DateFiche1.Text et le but de la transformation StrToDate(DateJourBase), DateJourBase préalablement calculé c'est le chat qui se mord la queue !

    Si l'on fait abstraction du problème des années bisextiles je proposerai d'utiliser une année "fixe" non bisextile i.e. 2017

    Soit un DateTimePicker : DTPbase ,
    et un string sous la forme dd mmm : DF
    je procéderai de la manière suivante, à la volée donc sans vérification
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
     
    var aa,mm,jj : Word;
         D1,D2 : TDateTime;
         D2String : String;
         Ecart : Integer;
    ....
    begin
    // obtention D1 
    DecodeDate(DTPBase.date,aa,mm,jj);
    D1:=EncodeDate(2017,mm,jj); 
    // obtention D2
    D2String:=DF+' 2017';
    D2:=StrToDate(D2String);
    // calcul écart
    Ecart:=DaysBetween(D1,D2);
    end;
    à noter que l'on pourrait aussi se baser sur l'année prise dans le datetimepicker, il suffirait de remplacer l'instruction
    D2String:=DF+' 2017' par DF:=Format('%s %d',[DF,aa]);Je reste néanmoins très perplexe dans la logique de l'utilisation faite des dates utiliser l'affichage au lieu de la valeur affichée pour faire le calcul me surprend

  3. #3
    Membre du Club
    Homme Profil pro
    Inscrit en
    Octobre 2006
    Messages
    74
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Tarn et Garonne (Midi Pyrénées)

    Informations professionnelles :
    Secteur : Services à domicile

    Informations forums :
    Inscription : Octobre 2006
    Messages : 74
    Points : 50
    Points
    50
    Par défaut
    Bonjour Sergiomaster

    Merci pour ta réponse mais à vrai dire, je n'ai pas tout saisi au niveau de ton code.

    C'est pas bien grave car j'ai résolu le problème en faisant la conversion de la date directement à la source du stringgrid (donc le format transmis à l'Edit DateFichex n'a pas besoin d'etre décodé)

    Merci
    Beauserge

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

Discussions similaires

  1. [AC-2010] Calcul difference entre 2 dates et 2 heures sur 4 champs
    Par clickandgo dans le forum VBA Access
    Réponses: 1
    Dernier message: 12/06/2013, 01h45
  2. Difference entre deux dates pour une alertes
    Par litlepom dans le forum Langage SQL
    Réponses: 3
    Dernier message: 17/05/2010, 17h59
  3. [AC-2003] calcul difference entre 2 dates et heures
    Par rene10 dans le forum IHM
    Réponses: 1
    Dernier message: 27/08/2009, 16h51
  4. calcul difference entre deux dates
    Par bambino13 dans le forum Général JavaScript
    Réponses: 1
    Dernier message: 22/06/2009, 10h01
  5. Valeur calculée difference entre deux dates #NOMBRE!
    Par gracouille dans le forum SharePoint
    Réponses: 3
    Dernier message: 13/06/2008, 11h59

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