将时间字符串解析为十进制?

时间:2013-03-28 19:34:30

标签: c#

在.Net中,有没有办法将'2:45'转换为小数2.75?

例如:

decimal d = TimeToDecimal("2:45");
Console.WriteLine(d);

//output is 2.75

如果无效数据,ex,minutes< 0< 60或不是h:m格式。

由于

2 个答案:

答案 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;
}