在.Net中,有没有办法将'2:45'
转换为小数2.75?
例如:
decimal d = TimeToDecimal("2:45");
Console.WriteLine(d);
//output is 2.75
如果无效数据,ex,minutes< 0< 60或不是h:m格式。
由于
答案 0 :(得分:13)
以下内容将输出2.75
:
TimeSpan time = TimeSpan.Parse("2:45");
decimal d = (decimal) time.TotalHours;
Console.WriteLine(d);
请注意,TimeSpan.TotalHours
property的类型为double
,而不是decimal
。
从TimeSpan.Parse
method的文档中,如果“至少有一天,小时,分钟或秒组件超出其有效范围”,它将抛出OverflowException
,因此应该采取为您提供输入验证。另请参阅TimeSpan.TryParse
method。
答案 1 :(得分:4)
private decimal TimeToDecimal(string Time)
{
DateTime dt = DateTime.Parse(Time);
decimal result = dt.Hour+ (dt.Minute / 60.0m);
return result;
}