Я пытаюсь отсчитывать время суток (24-часовой формат). Это мое решение до сих пор:
function TimeDiffStr(const s1, s2: string): string;
var
t1, t2: TDateTime;
secs: Int64;
begin
t1 := StrToDateTime(s1);
t2 := StrToDateTime(s2);
secs := SecondsBetween(t1, t2);
Result := Format('%2.2d:%2.2d:%2.2d', [secs div 3600, (secs div 60) mod 60, secs mod 60]);
end;
procedure TForm1.Timer1Timer(Sender: TObject);
var
TargetTime: TTime;
s: string;
begin
s := TimeDiffStr(TimeToStr(Now), TimeToStr(TargetTime));
end;
Если Now
, например, 15:35:02
, а целевое время - 21:44:59
, выходной сигнал правильный (06:09:57). Однако, если Now
равно 15:35:02
и целевое время равно 01:32:23
, вместо обратного отсчета с 09:57:21, оно будет считать вверх, поскольку функция не знает, что целевое время находится в другой день. .
Как я могу определить разницу между двумя значениями времени в разные дни?