C#字符串格式表示小数和小时的小时和分钟

joh*_*hnc 15 .net c# string-formatting

是否有一个简单的字符串格式,它将采用小数表示小时和小时的分数,并将其显示为小时和分钟?

例如:5.5格式化显示5小时30分钟.

我很乐意自己编写代码,但是如果可用的话,我更愿意使用现有的功能

Mat*_*ton 28

decimal t = 5.5M;
Console.WriteLine(TimeSpan.FromHours((double)t).ToString());
Run Code Online (Sandbox Code Playgroud)

那将给你"05:30:00",这是非常接近.然后,您可以将其格式化为所需的结果:

var ts = TimeSpan.FromHours((double)t);
Console.WriteLine("{0} hrs {1} minutes", ts.Hours, ts.Minutes);
Run Code Online (Sandbox Code Playgroud)

请注意,从十进制到双精度的转换可能会导致精度损失,但我不认为它在分钟刻度上会引起注意.对类型系统有类似Skeet理解的人可能会在这里发出声音.