Calculate Days Between Two Dates
13,378
You're trying to store a non-date value (the number of days between two dates) in a TDateTime
value. Since you don't want a date, use a double instead, and interpret it as a double:
var
DaysDiff: Double;
begin
DaysDiff := Date2.Date - Date1.Date;
ShowMessage(FloatToStr(DaysDiff));
end;
Better yet, use the functions in DateUtils
to do the work for you. If you need just whole days, use DaysBetween
:
var
DaysDiff: Integer;
begin
DaysDiff := DaysBetween(Date2.Date, Date1.Date);
ShowMessage(IntToStr(DaysDiff));
end;
If you need fractional (partial) days, use DaySpan
:
var
DaysDiff: Double;
begin
DaysDiff := DaySpan(Date2.Date, Date1.Date);
ShowMessage(FloatToStr(DaysDiff));
end;
Related videos on Youtube
Author by
Hayrulla Melibayev
By day: Working working By Night: Working again
Updated on June 04, 2022Comments
-
Hayrulla Melibayev almost 2 years
Please help me find days between two dates.
I have two objects TDBDateEdit date1 and date2.
procedure Torder_form.date2Click(Sender: TObject); var d3: TDateTime; begin d3:=date2.date - date1.date; showmessage(datetostr(d3)); end.
I put to
date1 = 07.10.2015
to
date2 - 15.11.2015
Result must be:
39
But program gives me result:
07.02.1900
I found DaysBetween function. and I changed my codes like that
procedure Torder_form.date2Click(Sender: TObject); var d3: TDateTime; begin d3:=DaysBetween(date2.date,date1.date); showmessage(datetostr(d3)); end.
But programs says Result:
07.02.1900
-
David Heffernan over 8 yearsAsk yourself how DateToStr knows you want to interpret the value as a time span or a date?
-
-
Hayrulla Melibayev over 8 yearsThanks for everyone I understand my mistake. And problem solved