rt
不能用sql语句实现,也就是说当用户输入两时间到文本框后,利用鼠标离开事件,就能求出两时间的小时数。(因为此条记录尚未存到数据库中,所以应该不能用sql语句实现的,数据库是oracle)两时间格式:2008-9-18 20:30:00
2008-9-29 21:30:00相差的时间数应该为:11天*24小时+1小时=264小时
不能用sql语句实现,也就是说当用户输入两时间到文本框后,利用鼠标离开事件,就能求出两时间的小时数。(因为此条记录尚未存到数据库中,所以应该不能用sql语句实现的,数据库是oracle)两时间格式:2008-9-18 20:30:00
2008-9-29 21:30:00相差的时间数应该为:11天*24小时+1小时=264小时
var
nh,oh: Tdatetime;
begin oh:=strtodatetime('2008-7-8 05:30:00');
nh:=strtodatetime('2008-7-8 07:30:00');
showmessage(floattostr(hourspan(nh,oh)));end;
调用 DateUtils 单元下的
YearSpan(DateTime1, DateTime2) //返回DateTime1, DateTime2的年间隔
MonthSpan(DateTime1, DateTime2) //返回DateTime1, DateTime2的月间隔
WeekSpan(DateTime1, DateTime2) //返回DateTime1, DateTime2的星期间隔
DaySpan(DateTime1, DateTime2) //返回DateTime1, DateTime2的天间隔
HourSpan(DateTime1, DateTime2) //返回DateTime1, DateTime2的小时间隔
MinuteSpan(DateTime1, DateTime2) //返回DateTime1, DateTime2的分钟间隔
SecondSpan(DateTime1, DateTime2) //返回DateTime1, DateTime2的秒间隔
所有的返回值都是 Double类型的 如果需要把他转化为整型的 可调用Math单元下的Ceil函数看你要算什么间隔了 通过这些函数的运用都可以取出
nh,oh: Tdatetime;
h,m,s:Integer;
begin oh:=strtodatetime('2008-7-8 05:30:00');
nh:=strtodatetime('2008-7-8 07:30:00');
h := Round(abs(nh - oh) * 24); //多少小时
m := Round(abs(nh - oh) * 24 * 60); //多少分钟
s := Round(abs(nh - oh) * 24 * 60 * 60); //多少秒
end;
DateUtils单元里很多处理时间的函数.
StartTime,EndTime: TDateTime;
Hours: Integer;
begin
StartTime := Now;
...
//数小时后
EndTime := Now; Hours := Trunc( (EndTime - StartTime)(*天数*) * 24 (*小时数*) );
ShowMessage('共经历了:'+ IntToStr(Hours) + '个小时.');
end;
MonthSpan(DateTime1, DateTime2) //返回DateTime1, DateTime2的月间隔
WeekSpan(DateTime1, DateTime2) //返回DateTime1, DateTime2的星期间隔
DaySpan(DateTime1, DateTime2) //返回DateTime1, DateTime2的天间隔
HourSpan(DateTime1, DateTime2) //返回DateTime1, DateTime2的小时间隔
MinuteSpan(DateTime1, DateTime2) //返回DateTime1, DateTime2的分钟间隔
SecondSpan(DateTime1, DateTime2) //返回DateTime1, DateTime2的秒间隔
支持
僵哥用自己的方法写的。