【发布时间】:2013-04-01 20:15:08
【问题描述】:
我有一些代码,例如,27:30(27 小时 30 分钟)并将其转换为小数,如 27.5。我有另一个功能相反。
public class Time
{
public static string Hours(decimal d)
{
return TimeSpan.FromHours((double)(d + 0.005M)).ToString("h\\:mm");
}
public static decimal Hours(string s)
{
decimal r;
if (decimal.TryParse(s, out r))
return r;
return (decimal)TimeSpan.Parse(s).TotalHours + 0.005M;
}
}
问题是从十进制到字符串的转换似乎要换行到 24 小时。如果我给它 30.0 它给我 6:00 这是错误的。应该是 30:00
我可以做些什么来避免包装?
谢谢
【问题讨论】:
-
它不是 24 小时换行的,您还必须查看“Days”属性。对于 30 小时,天数 = 1 和小时数 = 6。这就是您看到“6:00”的原因。
-
@ConradFrix,TimeSpan 的 ToString 中的“h”不显示“TotalHours”。它仅从“小时”属性中提取。
-
@David 我的错误我在看
Hours(string s)而不是Hours(decimal)