寻找一个代码示例,该示例返回两个具有正值和负值的 TTime 值之间的秒差。我尝试使用作为 DateUtils 单元一部分的 SecondsBetween 函数,但它只给出正值。
答案 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 始终为正值 - 自任何给定日期的午夜以来的时间。