繁体   English   中英

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

[英]Parse time string to decimal?

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

例如:

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

//output is 2.75

如果无效数据,例如,分钟<0 <60或者不是h:m格式,它应该抛出异常。

谢谢

以下将输出2.75

TimeSpan time = TimeSpan.Parse("2:45");
decimal d = (decimal) time.TotalHours;

Console.WriteLine(d);

请注意, TimeSpan.TotalHours属性的类型为double ,而不是decimal

TimeSpan.Parse方法的文档中,如果“至少有一天,小时,分钟或秒组件超出其有效范围”,它将抛出OverflowException ,因此应该为您进行输入验证。 另请参见TimeSpan.TryParse方法

private decimal TimeToDecimal(string Time)
{
    DateTime dt = DateTime.Parse(Time);
    decimal result = dt.Hour+ (dt.Minute / 60.0m);
    return result;
}

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM