两个 TTime 变量之间的差异

时间:2021-07-10 21:43:20

标签: delphi

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

2 个答案:

答案 0 :(得分:3)

有符号的差异就这么简单:

uses DateUtils, Math;

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

答案 1 :(得分:0)

下面的代码将返回两个 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 始终为正值 - 自任何给定日期的午夜以来的时间。

相关问题