'2:45'
.Net では、たとえば、 10 進数の 2.75に変換する方法はありますか?
元:
decimal d = TimeToDecimal("2:45");
Console.WriteLine(d);
//output is 2.75
無効なデータ、例、分 < 0 < 60、または h:m 形式でない場合は、例外をスローする必要があります。
ありがとう
'2:45'
.Net では、たとえば、 10 進数の 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
methodのドキュメントから、OverflowException
「日、時間、分、または秒のコンポーネントの少なくとも 1 つが有効な範囲外にある」場合にスローされるため、入力の検証を処理する必要があります。TimeSpan.TryParse
メソッドも参照してください。
private decimal TimeToDecimal(string Time)
{
DateTime dt = DateTime.Parse(Time);
decimal result = dt.Hour+ (dt.Minute / 60.0m);
return result;
}