使用 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
并且没有从 double
到 float
的隐式对话。您需要使用 f
或 F
后缀。而这个TimeSpan.FromHours
方法的参数是double
,而不是float
.
你原来的方法不行,因为一个小时有3600秒,而不是360秒,而且这样用模无论如何也行不通!您可以从分钟中获取秒数,例如29.39 分钟 * 60 % 60 = 23.4 秒。
我需要将表示小时的浮点数转换为 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
并且没有从 double
到 float
的隐式对话。您需要使用 f
或 F
后缀。而这个TimeSpan.FromHours
方法的参数是double
,而不是float
.
你原来的方法不行,因为一个小时有3600秒,而不是360秒,而且这样用模无论如何也行不通!您可以从分钟中获取秒数,例如29.39 分钟 * 60 % 60 = 23.4 秒。