function LeaveDateTimeStr(const fromDate, ToDate: TDateTime): string;
var
Days, H, M, S: Int64;
begin
Result := '';
if fromDate = ToDate then
begin
Result := '已到期';
end
else
begin
Days := ABS(DaysBetween(fromDate, ToDate));
H := ABS(HoursBetween(fromDate, ToDate));
M := ABS(MinutesBetween(fromDate, ToDate));
S := ABS(SecondsBetween(fromDate, ToDate));
if H >= HoursPerDay then
begin
H := H mod HoursPerDay;
end;
if M >= MinsPerHour then
begin
M := M mod MinsPerHour;
end;
if S >= SecsPerMin then
begin
S := S mod SecsPerMin;
end;
if Days <> 0 then Result := Format('%d天', [Days]);
if H <> 0 then Result := Format('%s%d小时', [Result, H]);
if M <> 0 then Result := Format('%s%d分', [Result, M]);
if S <> 0 then Result := Format('%s%d秒', [Result, S]);
if ToDate < fromDate then
Result := Format('已过期%s', [Result]);
end;
end;
这个函数可以计算出fromDate和ToDate之间间隔,可以精确到小时、分和秒。
使用这个函数需要引用单元DateUtils。
使用这个函数:
FDate := StrtoDateTime('2008-08-08 20:00:00');
Str := LeaveDateTimeStr(Now(), FDate);
Label1.Caption := str;