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
谢谢
用于处理持续时间的非常灵活的工具可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)
使用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中的内置函数,请参阅日期和时间支持.