在服务器中经常会用到时间的计算,如记录当前时间,存储当前时间戳,计算两个时间的差值。
TDateTime
datetime在内存中使用比较多,它是一个double类型,可以很精细的记录时间。
..
var
tvNow: TDateTime;
...
var
lvNow: TDateTime;
h, m, s, ms: Word;
dv: Double;
begin
tvNow := Now();
mmo1.Lines.Add(FormatDateTime('ddddd-hh:nn:ss', tvNow));
//增加一个小时
lvNow := IncHour(tvNow, 1);
mmo1.Lines.Add(FormatDateTime('ddddd-hh:nn:ss', lvNow));
//增加一个小时
lvNow := IncMinute(lvNow, 60);
mmo1.Lines.Add(FormatDateTime('ddddd-hh:nn:ss', lvNow));
//计算时间差值
dv := lvNow - tvNow;
mmo1.Lines.Add(FloatToStr(dv));
DecodeTime(dv, h, m, s, ms);
mmo1.Lines.Add(Format('%d-%d-%d-%d', [h, m, s, ms]));
end;
TFileDate
filedate顾名思义,用来存储比较多。它是一个int32型,占4字节,比Double少了一半的字节数,所以用来存数据库最好不过了。
filedate可以直接和Datetime互相转换,返回值是一个integer(xe里面是LongInt)
var
filedate: LongInt;
begin
filedate := DateTimeToFileDate(lvNow);
...
lvNow := FileDateToDateTime(filedate);
end;