两个时间变量之间的差异

Difference between two TTime Variables

正在寻找 returns 两个具有正值和负值的 TTime 值之间以秒为单位的差异的代码示例。我尝试使用作为 DateUtils 单元一部分的 SecondsBetween 函数,但它只给出正值。

下面的代码将 return 两个 TTime 值之间的(带符号的)差异,就像您完成了 T1-T2 一样。

USES System.DateUtils;

FUNCTION TimeDifference(T1,T2 : TTime) : INTEGER;
  BEGIN
    Result:=ROUND((FRAC(T1)-FRAC(T2))*SecsPerDay)
  END;

示例代码:

T1:=EncodeTime(12,0,0,0);
T2:=EncodeTime(13,0,0,0);
WRITELN(TimeDifference(T1,T2));
WRITELN(TimeDifference(T2,T1));

输出:

-3600
3600

请注意,没有“负 TTime 值”。 TTime 始终为正值 - 自任何给定日期午夜以来的时间。

带符号的差值就这么简单:

uses DateUtils, Math;

function TimeDiff(t1, t2: TTime): Integer;
begin
  Result := Sign(t2 - t1) * SecondsBetween(t1, t2);
end;