5

'2:45'.Net では、たとえば、 10 進数の 2.75に変換する方法はありますか?

元:

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

//output is 2.75

無効なデータ、例、分 < 0 < 60、または h:m 形式でない場合は、例外をスローする必要があります。

ありがとう

4

2 に答える 2

13

以下は出力します2.75

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

Console.WriteLine(d);

TimeSpan.TotalHoursプロパティのタイプdoubleは ではなくであることに注意してくださいdecimal

TimeSpan.Parsemethodのドキュメントから、OverflowException「日、時間、分、または秒のコンポーネントの少なくとも 1 つが有効な範囲外にある」場合にスローされるため、入力の検証を処理する必要があります。TimeSpan.TryParseメソッドも参照してください。

于 2013-03-28T19:37:54.193 に答える
4
private decimal TimeToDecimal(string Time)
{
    DateTime dt = DateTime.Parse(Time);
    decimal result = dt.Hour+ (dt.Minute / 60.0m);
    return result;
}
于 2013-03-28T19:39:10.430 に答える