怎样求两个日期之间所差的天数?(100分)

  • 主题发起人 主题发起人 HouBy
  • 开始时间 开始时间
H

HouBy

Unregistered / Unconfirmed
GUEST, unregistred user!
?????[?][?]
 
两个日期相减就可以了。A-B出来的就是所差的天数。
 
同意楼上的,日期型本身就是数字类型的
var
t1,t2 : Tdate;
days :Integer;
begin
days := Round(t1-t2);
end;
 
你是指数据库中,还是Delphi中?
在Delphi中日期实际采用的是Float型,取整后再相减就可以了,
在数据库中可以采用Datediff(day,date1,date2)获取
 
var
day1:integer;

day1:=trunc(datetimepicker2.date)-trunc(datetimepicker1.date);
 
四舍五入可能不一定合适:Round(t1-t2);
小数部分表示的是时间,先去掉小数部分:
uses ...math
d1,d2:TDateTime;
d:integer;//相差天数。
d:=floor(d2)-floor(d1);
 
procedure TForm1.Button1Click(Sender: TObject);
var
t1,t2,td:tdatetime;
Year, Month, Day, Hour, Min, Sec, MSec: Word;
begin
T1:=StrToDateTime('2002-5-26 20:30:10.100');
T2:=now;
td:=t2-t1;
Label1.Caption:=IntToStr(floor(td));
end;
 
两个时间直接减就是了
哪里要floor(d2)-floor(d1)?
trunc(datetimepicker2.date)-trunc(datetimepicker1.date)?
 
日期是个浮点数。直接减就行。
 
d6里有这样的函数,不行看源码
 
直接减肯定是错误的!!!!!!!!
多出来的小数不好处理。
凌晨1点,小数是 1/24 ,应该到了第二天。

但是 1点到 23 虽然相差 22/24 ,但还是在同一天。
 
如果你使用delphi6,用DaysBetween:
function DaysBetween(const ANow, AThen: TDateTime): Integer;

Description
Call DaysBetween to obtain the difference, in days, between two TDateTime values.
DaysBetween counts only whole days that have elapsed. Thus, DaysBetween reports the
difference between Dec 31, 1999 11:59 PM and Jan 1, 2000 11:58 PM as 0 because the
difference is one minute short of an entire day.
 
两个日期相减的差就是你所要的天数。有小数的就就是小时数。
 
日期时间数其实是用实数表示的,所以可以直接按实数转换,并据以计算。
var a:integer;
d1,d2:TDatetime;
begin
d1:=.....;
d2:=.....;
a:=round(int(d1))-round(int(d2))

//先用int去除日期中的小数部分(也就是只留下年月日部分),再用round取整后相减。
end
 
Delphi6 syntax:
function DaysBetween(const ANow, AThen: TDateTime): Integer;


 
同意SMALLBS的,DELPHI6里已经加入了一大堆关于日期计算的函数了,你可以使用帮助查看一下,
此外还有关于字符串操作的。你可以看看DELPHI6的新特征帮助。
 
多人接受答案了。
 
后退
顶部