1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41
| function MonthsBetween(const ANow, AThen: TDateTime): Integer;
var
dNow, dThen: TDateTime;
iDNow, iMNow, iYNow, iDThen, iMThen, iYThen: word;
begin
if ANow = AThen then
begin
//Si les dates sont égales rien ne sert de continuer
Result := 0;
Exit;
end
else if ANow > AThen then
begin
//Si la date de début est plus grande que la date de fin
//on les inverse
dNow := AThen;
dThen := ANow;
end
else
begin
dNow := ANow;
dThen := AThen;
end;
//Extraire les jours/mois/années des dates
DecodeDate(dNow, iYNow, iMNow, iDNow);
DecodeDate(dThen, iYThen, iMThen, iDThen);
//On compte le nombre de mois total
iMNow := iMNow + (iYNow * 12);
iMThen := iMThen + (iYThen * 12);
//On soustrait les mois de fin et de début
Result := iMThen - iMNow;
//Si le jour du mois de fin est plus petit,
//on n'a pas complété le mois en cours donc on le soustrait
if iDThen < iDNow then
Dec(Result);
end; |
Partager