Mirror

How to calculate the elapsed time between 2 DateTime fields (Views: 100)


Problem/Question/Abstract:

Using Delphi 5, I need to calculate the elapsed time between 2 DateTime fields with the result returned in Days, Hours and Minutes format.

Answer:

Subtract the values AsDateTime and then use DecodeDate and DecodeTime on the result:


procedure TMyForm.Button1Click(Sender: TObject);
var
  StartT, EndT, DeltaT: TDateTime;
  Days, Hour, Min, Sec, MSec: Word;
begin
  StartT := StrToDateTime('27.02.2000 13:45');
  EndT := StrToDateTime('02.03.2000 17:30');
  DeltaT := EndT - StartT;
  Days := trunc(DeltaT);
  DecodeTime(DeltaT, Hour, Min, Sec, MSec);
  ShowMessage(' Time elapsed: ' + IntToStr(Days) + ' days, ' + IntToStr(Hour) +
    ' hours, ' + IntToStr(Min) + ' minutes ');
end;


When trying to actually run the above sample, you have to change the string constants used to initialize the datetime vars according to your settings in ShortDateFormat and LongTimeFormat.

<< Back to main page