一个与系统时间有关的问题,热心人请进(13分)

  • 主题发起人 主题发起人 watt
  • 开始时间 开始时间
W

watt

Unregistered / Unconfirmed
GUEST, unregistred user!
我用now()函数获得了系统的时间,得到的时间格式是xx:xx:xx,在这个基础之上,我现在想做一样一个程序:计算出当前系统的时间与某个假定的时间间隔是多少,显示的格式必须是以秒的形式出现,比如现在的时间是2006年10月4日21点49分21秒,我想计算出现在这个时间距离2007年1月25日早上5点36秒还有多少秒?想请大虾们帮我解决这个历史性难题,虽然分不多,谢谢了。
 
var t1,t2:tdatetime;
t1:=strtodatetime('2006-10-4 21:49:21');
t2:=strtodatetime('2007-1-25 5:36:00');
间隔秒钟=(t2-t1)*24*3600
 
呵呵,虽然分数少,不过还是做个热心人吧!来解决这个“历史性”难题。
这要分两部分来运算,这是由于TDateTime的特殊性决定的,首先要理解TDateTime实际上是Double型的,因此就分为整数和小数部分,其中整数部分代表日期,小数部分代表时间,时间的值为这个时间与一整天总时间的比值。当两个TDateTime型变量相减时,其结果就是一个Double型变量,整数是天数,小数是时间。
var
t1,t2: TDateTime;
m: Double; //两个日期的差值
D: Integer; //两个日期相差天数
T: Double; //两个日期时间的差值
t3: Double; //计算的结果(秒)
begin
t1:=StrToDateTime(Edit1.Text);
t2:=StrToDateTime(Edit2.Text);
m := t2 - t1;
D := Trunc(m); //取差值的天数
T := m - D; //取差值的时间部分
t3 := (D * 24 * 3600) + (T * (24 * 60 * 60)); //两个TDateTime变量之间的差值(秒)
end;
 
jingmd大虾,我不太明白这句t1:=StrToDateTime(Edit1.Text);不知道这句是什么意思?干嘛要用Edit1.Text?
 
Edit1.Text??就是你输入后的字符。。。
Trunc是日期函数,所以要把字符。。。转换为日期
StrToDateTime字符。。。转换为日期函数
 
明白了,不过还有一个问题就是:怎样将double转化为string类型
 
郁闷,我得到的不是一个整数,而是一个小数,高手帮忙
 
暂时接受答案
 
后退
顶部