求时间加减算法(100分)

  • 主题发起人 主题发起人 jony1
  • 开始时间 开始时间
J

jony1

Unregistered / Unconfirmed
GUEST, unregistred user!
我想对时间进行加减运算,如先得到现有时间,然后通过加减算法得出以前或以后的时间
我发现每增加一秒是+0.00002,但如按此推算,增加一分钟是60(秒)*0。00002=0.0012
但实际上不对,增加一分钟正确的是+每+0。0007,增加一小时为0.04167,好像没啥规律
换算以来很烦,不知有何更好的方法,请指点,谢谢!
例:
label1.caption:=timetostr(strtotime(ti)+0.00002); //每+1秒为+0.00002
label2.caption:=timetostr(strtotime(ti)+0.0007); //每+1分为+0。0007
label3.caption:=timetostr(strtotime(ti)+0.04167);//每+1小时+0.04167
jony
 
T:TDateTime;

T:=T+StrToTime('00:00:01');//T加一秒。
T:=T+StrToTime('00:01:00');//T加一分钟。
。。。。。
 
1天=24*60*60秒=24*60分钟=24小时=1.0个TDateTime;
故:

1小时=1/24个TDateTime=4.1667E-2个TDateTime;
1分钟=1/24/60个TDateTime=6.9444E-4个TDateTime;
1秒=1/24/60/60个TDateTime=1.1574E-5个TDateTime;

看来你的1秒钟这个基数算错了
 
delphi 有许多丰富的时间函数可以帮你解决这些问题:
如:decodedate,decodetime,encodedate,encodetime
比如你可以将一秒:sec := encodetime(0,0,1,0);
一分:min := encodetime(0,1,0,0);
sec, min 是datetime型的变量 是可以加减的
详细见帮助

 
在Delphi中,时间是通过浮点数来表示,
小数点右边的整数部分表示日期,而小数部分则表示一天的时间
比如小数部分的
1 《……》一天,24小时
0.5 《……》12小时
0.25《……》6小时
1/24=0.04166666...... 《……》1小时
1/(24*60)=0.00069444...... 《……》1分钟
1/(24*60*60)=0.000015740740......《……》1秒

最简单还是用 Hexi 的方法
 
对,事实上按trustzhou说的就行。这是DELPHI自身对时间类型的处理。为什么不用呢?!
 
I also agree with trustzhou
 
多人接受答案了。
 

Similar threads

S
回复
0
查看
3K
SUNSTONE的Delphi笔记
S
S
回复
0
查看
2K
SUNSTONE的Delphi笔记
S
D
回复
0
查看
840
DelphiTeacher的专栏
D
后退
顶部