Parse time string to decimal?

c#

Solution

The following will output `2.75`:

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

Console.WriteLine(d);

Note that the `TimeSpan.TotalHours` property is of type `double`, not `decimal`.

From the documentation for the `TimeSpan.Parse` method, it will throw an `OverflowException` if "At least one of the days, hours, minutes, or seconds components is outside its valid range", so that should take care of input validation for you. See also the `TimeSpan.TryParse` method.

Problem

In .Net, is there a way to convert, say, `'2:45'` to the decimal 2.75? ex: ``` decimal d = TimeToDecimal("2:45"); Console.WriteLine(d); //output is 2.75 ``` It should throw an exception if invalid data, ex, minutes < 0 < 60 or not in the h:m format. Thanks

Original source

Related problems