两个时间变量之间的差异
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;
正在寻找 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;