关于计算时间差的问题(30分)

W

wolf_zj

Unregistered / Unconfirmed
GUEST, unregistred user!
下面程序用来计算两个时间之间的差值 计算出来的小时、分、秒差值是正确的,但日期
上显示出来的却是1900-1-9,根本看不出来差了几天。不知道为什么?(delphi6,windows xp)
var
d,d1,d2:tdatetime;
Year, Month, Day, Hour, Min, Sec, MSec: Word;
begin
d2:=StrToDateTime('2002-4-28 15:00:00');
d1:=StrToDateTime('2002-4-18 12:00:00');
d:=d2-d1;
DecodeDate(d, Year, Month, Day);
DecodeTime(d, Hour, Min, Sec, MSec);
Label1.Caption:=IntToStr(year)+'-'+IntToStr(month)+'-'+IntToStr(day)+'-'+IntToStr(hour)+'-'+IntToStr(min)+'-'+IntToStr(sec);
 
function DaySpan(const ANow, AThen: TDateTime): Double;
 
用下面的代码试试:
Label1.Caption:=formatDateTime('yyyy-mm-dd hh:nn:ss',d);
 
用format的没用 只不过显示稍微好看了点 变成了1900-01-09
 
相差的天数就是d的整数部分,
Label1.Caption:=IntToStr(floor(d))+
'-'+IntToStr(hour)+'-'+IntToStr(min)+'-'+IntToStr(sec);
 
两日期之差表示的是之间的天数,例如:
var
d,d1,d2:tdatetime;
Year, Month, Day, Hour, Min, Sec, MSec: Word;
begin
d2:=StrToDateTime('2002-4-28 15:00:00');
d1:=StrToDateTime('2002-4-18 12:00:00');
d:=d2-d1;
那么d等于10.125,表示10又1/8天
 
因为,Delphi是从1899-12-30号开始算日期的,过10天是1900-01-09.
DateTimeToTimeStamp就可以知道了相隔的天数.
 
给个标准答案先!
 
多人接受答案了。
 
顶部