计算两个日期之间的天数
Calculate Days Between Two Dates
请帮我算出两个日期之间的天数。
我有两个对象 TDBDateEdit date1 和 date2。
procedure Torder_form.date2Click(Sender: TObject);
var d3: TDateTime;
begin
d3:=date2.date - date1.date;
showmessage(datetostr(d3));
end.
我给date1 = 07.10.2015
到date2 - 15.11.2015
结果必须是:39
但是程序给了我结果:07.02.1900
我找到了 DaysBetween 函数。然后我就这样更改了我的代码
procedure Torder_form.date2Click(Sender: TObject);
var d3: TDateTime;
begin
d3:=DaysBetween(date2.date,date1.date);
showmessage(datetostr(d3));
end.
但是程序说结果:07.02.1900
您试图在 TDateTime
值中存储非日期值(两个日期之间的天数)。由于您不需要 date,请改用双精度,并将其解释为双精度:
var
DaysDiff: Double;
begin
DaysDiff := Date2.Date - Date1.Date;
ShowMessage(FloatToStr(DaysDiff));
end;
更好的是,使用 DateUtils
中的功能为您完成这项工作。如果您只需要一整天,请使用 DaysBetween
:
var
DaysDiff: Integer;
begin
DaysDiff := DaysBetween(Date2.Date, Date1.Date);
ShowMessage(IntToStr(DaysDiff));
end;
如果您需要小数(部分)天数,请使用 DaySpan
:
var
DaysDiff: Double;
begin
DaysDiff := DaySpan(Date2.Date, Date1.Date);
ShowMessage(FloatToStr(DaysDiff));
end;
我在我的一个项目中遇到了同样的问题。但是在 Delphi 帮助中稍作搜索后,我发现 Delphi 有一组丰富的日期函数。无论如何,您可以使用 from 'DaysBetween' 函数来解决您的问题。我的代码是这样的:
procedure TForm1.btnResultClick(Sender: TObject);
var
FirstDate, SecondDate: TDateTime;
format:TFormatSettings;
intDays: Integer;
begin
format:= TFormatSettings.Create();
format.ShortDateFormat := 'yyyy/mm/dd';
FirstDate := StrToDate(eFirstDate.Text,format);
SecondDate := StrToDate(eSecondDate.Text,format);
intDays:= DaysBetween(FirstDate,SecondDate);
eFinalDate.Text:= intToStr(intDays);
end;
请帮我算出两个日期之间的天数。
我有两个对象 TDBDateEdit date1 和 date2。
procedure Torder_form.date2Click(Sender: TObject);
var d3: TDateTime;
begin
d3:=date2.date - date1.date;
showmessage(datetostr(d3));
end.
我给date1 = 07.10.2015
到date2 - 15.11.2015
结果必须是:39
但是程序给了我结果:07.02.1900
我找到了 DaysBetween 函数。然后我就这样更改了我的代码
procedure Torder_form.date2Click(Sender: TObject);
var d3: TDateTime;
begin
d3:=DaysBetween(date2.date,date1.date);
showmessage(datetostr(d3));
end.
但是程序说结果:07.02.1900
您试图在 TDateTime
值中存储非日期值(两个日期之间的天数)。由于您不需要 date,请改用双精度,并将其解释为双精度:
var
DaysDiff: Double;
begin
DaysDiff := Date2.Date - Date1.Date;
ShowMessage(FloatToStr(DaysDiff));
end;
更好的是,使用 DateUtils
中的功能为您完成这项工作。如果您只需要一整天,请使用 DaysBetween
:
var
DaysDiff: Integer;
begin
DaysDiff := DaysBetween(Date2.Date, Date1.Date);
ShowMessage(IntToStr(DaysDiff));
end;
如果您需要小数(部分)天数,请使用 DaySpan
:
var
DaysDiff: Double;
begin
DaysDiff := DaySpan(Date2.Date, Date1.Date);
ShowMessage(FloatToStr(DaysDiff));
end;
我在我的一个项目中遇到了同样的问题。但是在 Delphi 帮助中稍作搜索后,我发现 Delphi 有一组丰富的日期函数。无论如何,您可以使用 from 'DaysBetween' 函数来解决您的问题。我的代码是这样的:
procedure TForm1.btnResultClick(Sender: TObject);
var
FirstDate, SecondDate: TDateTime;
format:TFormatSettings;
intDays: Integer;
begin
format:= TFormatSettings.Create();
format.ShortDateFormat := 'yyyy/mm/dd';
FirstDate := StrToDate(eFirstDate.Text,format);
SecondDate := StrToDate(eSecondDate.Text,format);
intDays:= DaysBetween(FirstDate,SecondDate);
eFinalDate.Text:= intToStr(intDays);
end;