2个时间怎么相减阿?(50分)

  • 主题发起人 主题发起人 gf.z
  • 开始时间 开始时间
G

gf.z

Unregistered / Unconfirmed
GUEST, unregistred user!
第一个时间用timetostr(now)得到!
第二个时间是手工输入的!如:21:54
怎么得到2个时间相减的秒数?(第二减第一)
 
都转化成tdatetime格式相减不就行了么?
 
timetostr(now-strtodatetime(datetostr(now)+' 21:45'))
 
用timetostr(now-strtodatetime(datetostr(now)+' 21:45'))的话
如果第二个时间变成了比如早上 08:10的话,则得出的值为13:28:37,变成了第一个-第二个了!
怎么办阿?
 
如果要顾及早上下午的话,只有加上日期了,year-month-day-time,再相减,
 
谁能帮我写出具体的代码阿!时间问题我实在烦死了!我写步出阿!谢谢!!!
 
这样:
var
value:TTime;
iHour,iMin,iSec,iMSec:Word;
TotalSec:Word;
begin
value:=input_time-Time();//input_time为手工输入的时间值
DecodeDateTime(value,iHour,iMin,iSec,iMSec);
TotalSec:=iHour*60*60+iMin*60+iSec;//TotalSec为最后的秒数
end;
 
上面有用吧?
 
Trunc(s4-s1)
 
时间就是浮点数,整数部分是日期,小数是时间.
直接减就行了
 
//use DateUtils ==>Delphi不是有自带函数吗?
function SecondsBetween(const ANow, AThen: TDateTime): Int64;
 
这两句用了也会好一些!固定时间的格式
ShortTimeFormat := 'hh:nn:ss' ;
LongTimeFormat := 'hh:nn:ss' ;


 
delphi中有自带的函数,你查看一下帮助?
 
还是不行阿!
var
value:TTime;
iHour,iMin,iSec,iMSec:Word;
TotalSec:Word;
begin
value:=input_time-Time();//input_time为手工输入的时间值
DecodeDateTime(value,iHour,iMin,iSec,iMSec);
TotalSec:=iHour*60*60+iMin*60+iSec;//TotalSec为最后的秒数
end;
---------------------------------------
DecodeDateTime找不到!改成decodetime可以,但是,如果第二个时间(手工输入的小于第一个)则变成第一个-第二个了,又倒头了!!
怎么办阿???
 
唉,你都找到decodetime乐,难道没有看到decodedate?呵呵。
建议你下在大富翁离线浏览的那个280M的chm,很多问题都有着答案。
 
procedure TForm1.Button1Click(Sender: TObject);
var
T1:TDateTime;
Secs:integer;
begin
T1:=strtotime('18:54');
Secs:=trunc((StrtoTime(timetostr(now))-t1)*24*60*60);
showmessage(inttostr(Secs));
end;
 
我下载了大富翁离线浏览的那个280M的chm,可是我一双击后,xp就说执行了非法操作!!!55555555
 
不知道你们在干什么!!!
const
DaysPerWeek = 7;
WeeksPerFortnight = 2;
MonthsPerYear = 12;
YearsPerDecade = 10;
YearsPerCentury = 100;
YearsPerMillennium = 1000;

DayMonday = 1;
DayTuesday = 2;
DayWednesday = 3;
DayThursday = 4;
DayFriday = 5;
DaySaturday = 6;
DaySunday = 7;

OneHour = 1 / HoursPerDay;
OneMinute = 1 / MinsPerDay;
OneSecond = 1 / SecsPerDay;
OneMillisecond = 1 / MSecsPerDay;

function SpanOfNowAndThen(const ANow, AThen: TDateTime): TDateTime;
begin
if ANow < AThen then
Result := AThen - ANow
else
Result := ANow - AThen;
end;

function SecondSpan(const ANow, AThen: TDateTime): Double;
begin
Result := SecsPerDay * SpanOfNowAndThen(ANow, AThen);
end;

function SecondsBetween(const ANow, AThen: TDateTime): Int64;
begin
Result := Trunc(SecondSpan(ANow, AThen));
end;

在unit DateUtils里,自己去看看(D6)
 
edit1.Text:=formatfloat('',strtodatetime('23:59:59')-strtodatetime('00:00:00'))
 
只有jsxjd答对了
 

Similar threads

S
回复
0
查看
862
SUNSTONE的Delphi笔记
S
S
回复
0
查看
787
SUNSTONE的Delphi笔记
S
后退
顶部