AgeAtDateInMonths Function |
Unit
QESBPCSDateTime
Declaration
Function AgeAtDateInMonths(const DOB, DT: TDateTime): Integer;
Description
If DT occurs before DB then -1 is returned. Routine donated by David Gobbett.
Parameters |
DOB | Date of Birth. |
DT | Date in question. |
Returns
Age in Integral Months at the Date in question.
Category
Date/Time Arithmetic Routines
Month Based Arithmetic Routines
Year Based Arithmetic RoutinesImplementation
function AgeAtDateInMonths (const DOB, DT: TDateTime): Integer; var D1, D2: Integer; M1, M2: Integer; Y1, Y2: Integer; begin if DT < DOB then Result := -1 else begin OptDecodeDateI (DOB, Y1, M1, D1); OptDecodeDateI (DT, Y2, M2, D2); if Y1 = Y2 then // Same Year Result := M2 - M1 else // Different Years begin // 12 months per year age Result := 12 * AgeAtDate (DOB, DT); if M1 > M2 then Result := Result + (12 - M1) + M2 else if M1 < M2 then Result := Result + M2 - M1 else if D1 > D2 then // Same Month Result := Result + 12; end; if D1 > D2 then // we have counted one month too many Dec (Result); end; End; |
|