Diferrence entre 2 dates [Résolu]

Signaler
Messages postés
66
Date d'inscription
jeudi 29 janvier 2009
Statut
Membre
Dernière intervention
17 octobre 2018
-
Messages postés
14883
Date d'inscription
mardi 11 mars 2003
Statut
Contributeur
Dernière intervention
22 octobre 2020
-
Bonjour ;

j'ai une table paradox qui contient champ date1 et date2
je veux faire la difference entre ces 2 dates et le resultat sera en nombre d'annee,mois,jour et les inserer dans la table dans leur champs respectif..
merci codialement

4 réponses

Messages postés
66
Date d'inscription
jeudi 29 janvier 2009
Statut
Membre
Dernière intervention
17 octobre 2018

j'ai trouver ca sur internet :

function GetYMDBetween(FromDate, ToDate: TDateTime;
  var Years, Months, Days: Integer): Boolean;
var
  FromY, FromM, FromD,    // from date
  ToY, ToM, ToD: Word;    // to date
  TmpDate: TDateTime;
  PreviousMonth: Byte;
  DaysInMonth: Byte;
begin
  Result := FromDate <= ToDate;
  if not Result then
  begin
    TmpDate := ToDate;
    ToDate := FromDate;
    FromDate := TmpDate;
  end;
  DecodeDate(ToDate, ToY, ToM, ToD);
  DecodeDate(FromDate, FromY, FromM, FromD);
  Years := ToY - FromY;
  Months := ToM - FromM;
  Days := ToD - FromD;
  if Days < 0 then
  begin
    Dec(Months);
    PreviousMonth := ToM + (Byte(ToM = 1) * 12) - 1;
    case PreviousMonth of
      1,3,5,7,8,10,12: DaysInMonth := 31;
      4,6,9,11       : DaysInMonth := 30;
      else
        DaysInMonth := 28 + Byte(IsLeapYear(ToY));
    end;
    Days := DaysInMonth - Abs(Days);
  end;
  if Months < 0 then
  begin
    Dec(Years);
    Months := 12 - Abs(Months);
  end;
end;


mais le resultat est booleen
Messages postés
14883
Date d'inscription
mardi 11 mars 2003
Statut
Contributeur
Dernière intervention
22 octobre 2020
446
Bonsoir, je ne suis pas un pro de delphi, mais dans la signature de la fonction, il y a Years, Month et Day, que tu dois pouvoir récupérer ensuite.

Penser aux balises de coloration syntaxique: bouton <>, préciser le langage :<code csharp>.
Quand la solution est trouvée, mettre la discussion Résolue.
Messages postés
420
Date d'inscription
samedi 17 mai 2003
Statut
Membre
Dernière intervention
6 mai 2019
16
Salut,

La réponse de Whismeril est tout à fait exacte.

Il te faut déclarer trois variable de type Integer correspondant au nombre d'années, de mois, de jours séparant 2 dates (n'est-ce pas le résultat que tu cherches ?).
Puis les passer en paramètres.
Et bien sûr, passer 2 dates de type TDateTime ou TDate afin de pouvoir faire le calcul.
Le résultat (tu n'es pas obligé de l'utiliser) t'indique seulement si la 7ère date et antérieure à la 2eme, sous forme de booléen.

Toujours essayer de comprendre la logique d'un routine avant de l'utiliser...
Messages postés
66
Date d'inscription
jeudi 29 janvier 2009
Statut
Membre
Dernière intervention
17 octobre 2018

merci a vous ...
Messages postés
14883
Date d'inscription
mardi 11 mars 2003
Statut
Contributeur
Dernière intervention
22 octobre 2020
446
Bonsoir, si tu as solutionné ton problème, merci de mettre la discussion "Résolue".