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;