使用delphi将HH:MM:SS转换为秒或分钟

use*_*984 3 delphi time datetime

有人可以告诉我关于将持续时间格式化HH:MM:SS转换为秒或分钟的最佳方法吗?

即.00:01:49 = 109secs

我正在使用此代码但不起作用

var
i: real;
j: integer;
begin
i := frac(real(StrToTime('00:00:01')));
j := trunc(frac(real(StrToTime('01:00:00'))) / i );
memo2.lines.add(inttostr(j));
Run Code Online (Sandbox Code Playgroud)

当我用00:10:00尝试代码返回599

谢谢

Uwe*_*abe 5

用于处理持续时间的非常灵活的工具可TTimeSpan在System.TimeSpan单元中找到.您可以以不同的单位(秒,分钟,小时......)获得结果,并根据您的需要进行格式化.

var
  timeSpan: TTimeSpan;
begin
  timeSpan := TTimeSpan.Parse('00:01:49');
  memo2.lines.add(Format('%1.1f min', [timeSpan.TotalMinutes]));
end;
Run Code Online (Sandbox Code Playgroud)


LU *_* RD 5

使用DateUtils单位:

WriteLn(SecondOfTheDay(StrToTime('00:10:00')));
WriteLn(MinuteOfTheDay(StrToTime('00:10:00')));
Run Code Online (Sandbox Code Playgroud)

输出:

600
10
Run Code Online (Sandbox Code Playgroud)

您的代码无法正常工作的原因是浮点值通常无法准确表示.要避免有关a如何TDateTime表示时间的所有实现细节,请使用SysUtils和DateUtils中的内置函数,请参阅日期和时间支持.