如何将两个TDataTime值之差转换成时、分或者秒?(50分)

  • 主题发起人 主题发起人 老金
  • 开始时间 开始时间

老金

Unregistered / Unconfirmed
GUEST, unregistred user!
我在进行故障统计过程中,需要把数据库中读出的两个TDatetime类型的时间之差转换成用户要求的小时、分钟或者秒,请问有没有现成的控件或其它方法来完成。
 
RXLib的DateUtil单元中有一名为DateDiff的过程,可计算两个TDateTime的差
别,它只计算日期部分,输出相差多少年、月、日。可将此过程的代码修改一
下,就可满足需要。
 
时间的分解与合成:
encodetime
decodetime
 
To Jams:
what is >>?
 
Delphi stores date and time values in the TDateTime type.
The integral part of a TDateTime value is the number of days
that have passed since 12/30/1899.
The fractional part of a TDateTime value is fraction of
a 24 hour day that has elapsed.
据此,
var t1,t2:tdatetime;x:double;
t1:=第一次故障时间
t2:= 2..........
x:=t2-t1 ;
x的整数部分就是天数,小数部分乘以24=小时的时间
 
当然你如果相精确到分钟
x的小数部分 *24 *60
精确到秒
x的小数部分 *24 *60 *60
 
decodetime
decodedate
formatdatetime
 
方法1、用DecodeDate、DecodeTime可以实现,稍微麻烦一些
方法2:
procedure TForm1.Button1Click(Sender: TObject);
var
t1,t2:TDateTime;
begin
t1:=StrToDateTime('1999-3-23 4:50:23');
t2:=StrToDateTime('1999-3-24 5:58:45');
label1.caption:=inttostr(trunc(t2-t1))+'天:'+floattostr(trunc(frac(t2-t1)*24))+'小时:'+
floattostr(trunc(Frac((t2-t1)*24)*60))+'分:'+floattostr(trunc(Frac((t2-t1)*24*60)*60))+'秒';
end;
 
以下的简单程序即可实现
var
d,d1,d2:tdatetime;
Year, Month, Day, Hour, Min, Sec, MSec: Word;
begin
d:=d2-d1;
DecodeDate(d, Year, Month, Day);
DecodeTime(d, Hour, Min, Sec, MSec);
end;
 
;我的程序使用的方法与yck的方法相同,绝对没问题!
 
多人接受答案了。
 
后退
顶部