delphi日期之差计算

标题: 作者:孙空空 时间:2009-09-25 09:41
时间处理的秘密

TDateTime类型实际上就是一个double(双精度数). 整数部分是日期小数部分是时间。例如

var

DateTime : TDateTime;

Date : TDateTime;

Time : TDateTime;

begin

DateTime := now;

//获得日期

Date := Trunc( DateTime );

//获得时间

Time := Frac( DateTime );

end;

日期运算

如果你想增加几天,只需要加一个天数就可以了

var

DateTime : TDateTime;

begin

DateTime := now;

//七天以后

DateTime := DateTime + 7;

end;

想要知道两个日期的差距,只需要互相减一下就可以了。

var

StartTime, StopTime, Difference : TDateTime;

begin

Difference := StopTime - StartTime;

end;

标题: 作者:孙空空 时间:2009-09-25 09:41
日期有两种:TDate, TDateTime

无论是哪一种,在系统中都是以双精度浮点数(Double)的形式存储的。所以日期之间可以直接加减。

1. 两天之间的天数:

var myDate1,myDate2:TDate;

begin

myDate1:=StrToDate('2002-1-1');

myDate2:=StrToDate('2002-8-8');

Edit1.text:=IntToStr(Round(myDate1-myDate2));

end; //Round()是四舍五入取整

2. 某个日期180天后的日期

var myDate1,myDate2:TDate;

begin

myDate1:=StrToDate('2002-11-12');

myDate2:=myDate1+180;

Edit1.Text:=DateToStr(myDate2);

end;

3. 如果日期是TDateTime类型的(日期+时间)

相应的日期操作为:DateTimeToStr(),StrToDateTime()等

计算两个DateTime之间的小时差,相减结果*24,然后取整

计算两个DateTime之间的分钟差,相减结果*24*60,然后取整

计算两个DateTime之间的秒差,相减结果*24*60*60,然后取整

标题: 作者:孙空空 时间:2009-09-25 09:41
function DaysBetween(const ANow, AThen: TDateTime): Integer;

返回整天数目,例如,1999-12-31 23:59:00到2000-1-1 23:58:00

它将返回0,因为它还不足一天。:)

相反,

function DaySpan(const ANow, AThen: TDateTime): Double;

将返回不完整的天数,例如,刚好一天就返回1,如果不足一天

则可能返回0.9天或0.8天或0.5天等等。:)

标题:Delphi日期计算问题 作者:crazy_wen 时间:2009-09-24 13:54
hourtime:=DateUtils.HourOf(now - 17/60/24);请问后面的数字式什么意思,谢谢
标题: 作者:kjw_ok 时间:2009-12-29 12:30
观望中。。。。