Has anyone else experienced problems with date/time calculations due to
Delphi offsetting the date by 30/12/1899

The situation is that I wish to calculate a person's current age which
appeared to be simple: subtract their date of birth from the current date
then decode into actual years.

But Delphi insists on adding this offset to the date so I end up with a
person having an age of 1901 years.
(Delphi 3)

Code below:

function CurrentAge(DOB:TDateTime):integer; //Return years only
var y,m,d:word;
    CDate:TDateTime;
begin
     CDate:=Date-DOB;
     DecodeDate(CDate,y,m,d);
     Result:=y;
end;

The date subtraction is fine and in one example produces a result of 374
days, just over 1 year, Delphi then makes this into year 1901 but by the
calculation the actual number stored in the TDateTime is 1.0 something,
which it adds 30/12/1899 to

The best I have come up with is to subtract 1900 from the year but this will
be 1 day out.


---------------------------------------------------------------------------
    New Zealand Delphi Users group - Delphi List - [EMAIL PROTECTED]
                  Website: http://www.delphi.org.nz

Reply via email to