使用 c# 表示 hours:minutes:seconds 的小时数的浮点数

float representing hours to hours:minutes:seconds using c#

我需要将表示小时的浮点数转换为 Hours:Minutes:Seconds。

使用 C# 怎么可能。

目前我正在将这个 5.4898391027272906 浮点数小时转换为小时分秒,我只得到了小时和分钟而不是秒的期望结果。

下面是我的代码:

double time = 5.4898391027272906;
double hours = Math.Floor(time);
double minutes = Math.Floor(time * 60 % 60);
double seconds = Math.Floor(time * 360 % 360);

Result: hours = 5, minutes = 29 and seconds = 176

但我想在 60 秒之间得到一秒。

使用TimeSpan.FromHours方法怎么样?

var ts = TimeSpan.FromHours(5.4898391027272906);
Console.WriteLine(ts.Seconds); // 23

不要对时间间隔使用一些整数计算。 正是 TimeSpan 的用途。

顺便说一下,您的代码甚至无法编译。如果没有任何后缀,您的 5.4898391027272906 将是 double 而不是 float 并且没有从 doublefloat 的隐式对话。您需要使用 fF 后缀。而这个TimeSpan.FromHours方法的参数是double,而不是float.

你原来的方法不行,因为一个小时有3600秒,而不是360秒,而且这样用模无论如何也行不通!您可以从分钟中获取秒数,例如29.39 分钟 * 60 % 60 = 23.4 秒。