Diferrence entre 2 dates

Résolu
mokzarfa
Messages postés
69
Date d'inscription
jeudi 29 janvier 2009
Statut
Membre
Dernière intervention
31 mai 2022
- 28 févr. 2014 à 12:38
Whismeril
Messages postés
17483
Date d'inscription
mardi 11 mars 2003
Statut
Modérateur
Dernière intervention
4 juillet 2022
- 2 mars 2014 à 23:17
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

mokzarfa
Messages postés
69
Date d'inscription
jeudi 29 janvier 2009
Statut
Membre
Dernière intervention
31 mai 2022

Modifié par jordane45 le 28/02/2014 à 13:28
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
0
Whismeril
Messages postés
17483
Date d'inscription
mardi 11 mars 2003
Statut
Modérateur
Dernière intervention
4 juillet 2022
600
Modifié par Whismeril le 28/02/2014 à 23:33
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.
0
korgis
Messages postés
420
Date d'inscription
samedi 17 mai 2003
Statut
Membre
Dernière intervention
6 mai 2019
16
2 mars 2014 à 13:39
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...
0
mokzarfa
Messages postés
69
Date d'inscription
jeudi 29 janvier 2009
Statut
Membre
Dernière intervention
31 mai 2022

Modifié par mokzarfa le 2/03/2014 à 22:53
merci a vous ...
0
Whismeril
Messages postés
17483
Date d'inscription
mardi 11 mars 2003
Statut
Modérateur
Dernière intervention
4 juillet 2022
600
2 mars 2014 à 23:17
Bonsoir, si tu as solutionné ton problème, merci de mettre la discussion "Résolue".
0