一个关于日期的小问题!!!! ( 积分: 10 )

  • 主题发起人 主题发起人 雨林^-^
  • 开始时间 开始时间

雨林^-^

Unregistered / Unconfirmed
GUEST, unregistred user!
我定义了两个日期变量!!
var
aa,bb:Tdate;
aa:=2005-1-1;
bb:=2005-2-1;
我想得出这两个日期相差的天数
我直接用bb-aa但不行,有谁知道两个日期相差的天数的函数!!!
 
我定义了两个日期变量!!
var
aa,bb:Tdate;
aa:=2005-1-1;
bb:=2005-2-1;
我想得出这两个日期相差的天数
我直接用bb-aa但不行,有谁知道两个日期相差的天数的函数!!!
 
uses DateUtils;

function DaysBetween(const ANow, AThen: TDateTime): Integer;
 
to xianguo
我用了DaysBetween怎么会只得出一个1呀
 
procedure TForm1.Button6Click(Sender: TObject);
var
aa,bb : Tdate;
begin
aa:=StrToDate('2005-1-1');
bb:=StrToDate('2005-2-1');
Memo1.Lines.Add(IntToStr(DaysBetween(bb, aa))); //答案 31
end;
 
uses dateutils,math;

procedure TForm1.Button1Click(Sender: TObject);
var
Date1,Date2:TDate;
r1,r2,r3:integer;
begin
Date1:=Min(DateTimePicker1.date,DateTimePicker2.date);
Date2:=Max(DateTimePicker1.date,DateTimePicker2.date);
r1:=YearsBetween(Date1,Date2);
r2:=MonthsBetween(Date1,Date2)-r1*12;
r3:=DayOf(Date2)-DayOf(Date1) +IfThen(DayOf(Date1)<=DayOf(Date2),0,DaysInMonth(StartOfTheMonth(Date2)-1));
ShowMessage(Format('两个日期相差%d年%d个月%d天',[r1,r2,r3]));
end;
 
to xianguo
你直接用DaysBetween(2005-2-1,2005-1-1)这样试试,结果真的是1.
 
我试过了,31
 
或者

procedure TForm1.Button6Click(Sender: TObject);
var
aa, bb : Tdate;
ii : Integer;
begin
aa:=StrToDate('2005-1-1');
bb:=StrToDate('2005-2-1');
ii := Trunc(bb-aa);
Memo1.Lines.Add(IntToStr(ii));
end;
 
试一下:procedure TForm1.Button1Click(Sender: TObject);
var
days:integer;
a,b:string;
begin
a:='2005-2-1';
b:= '2005-1-1';
days:=daysbetween(StrToDate(b),StrToDate(a));
ShowMessage(IntToStr(days));
end;
 
用时间撮:
var
days:integer;
aa,dd:Tdatetime;
begin
days:=datetimetotimestamp(aa).date-datetimetotimestamp(bb).date;
end;// days就是你要的天数.
 
多人接受答案了。
 
memo1.lines.add(inttostr(DaysBetween(Strtodate('2005-2-1'),strtodate('2005-1-1'))));
结果是31呀
楼主的是不是没转换成Date类型[?][?][?][?]
 
后退
顶部