procedure TForm1.Button1Click(Sender: TObject);
var
vStartTime, vEndTime: TTime;
T: Real;
R: Real;
begin
Randomize;
vStartTime := StrToTime('07:58:28');
vEndTime := StrToTime('08:03:57');
T := vEndTime - vStartTime;
R := Random;
while R > T do R := R - T;
Caption := TimeToStr(vStartTime + R);
end;
var
vStartTime, vEndTime: TTime;
T: Real;
R: Real;
begin
Randomize;
vStartTime := StrToTime('07:58:28');
vEndTime := StrToTime('08:03:57');
T := vEndTime - vStartTime;
R := Random;
while R > T do R := R - T;
Caption := TimeToStr(vStartTime + R);
end;
D1, D2: TDateTime;
R: Real;
begin
D1 := StrToDateTime('07:58:28');
D2 := StrToDateTime('08:03:57');
R := 0;
while (R < D1) or (R > D2) do
R := random(10000) / 10000;
end;
1。将hh:mm:ss(时分秒)格式表示的时间转换为仅用s(秒)表示的时间:
s=(hh*24+mm)*60+ss
2。利用上述公式,将07:58:28 与 08:03:57都转换为秒表示的时间:s1,s2
3。你要的随即时间,用秒表示的,为: s:=s1+random(s2+1)
4。你要的用hh:mm:ss(时分秒)的随即时间为:
ss:=s mod 60;
mm:=(s-ss) div 60
hh:=(s-ss-mm*60) div 24
5。将ss,mm,hh三各个数,用inttostr函数转换成字符串,再中间插入冒号就完成了整个。[注]这是苯办法,在windows的API中,可能有将hh:mm:ss(时分秒)格式时间转换为s(秒)时间,或进行反向转换,的现成函数可用。Delphi中,有关日期(date)和时间(time)也有许多函数,你可用help去查,看是否有更方便的工具。