计算两个日期之间的天数

时间:2015-10-07 11:30:56

标签: delphi date datetime delphi-7

请帮我找两个日期之间的日子。

我有两个对象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

2 个答案:

答案 0 :(得分:9)

您尝试在TDateTime值中存储非日期值(两个日期之间的天数)。由于您不想要日期,请改用double,并将其解释为double:

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;

答案 1 :(得分:0)

我的一个项目遇到了同样的问题。但是在Delphi帮助中进行了一些搜索之后,我发现Delphi在日期上有很多功能。无论如何,您可以使用'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;