2013-03-28 21 views
5

.Netには、例えば、'2:45'を小数点2.75に変換する方法がありますか?10進数の文字列を解析しますか?

EX:

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

//output is 2.75 

無効データ、EX、分Hで 60またはしない場合は、例外をスローする必要があり:Mフォーマット。 TimeSpan.TotalHours propertyはタイプdouble、ないdecimalであること

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

Console.WriteLine(d); 

注:

おかげ

+0

重複しているhttp://stackoverflow.com/q/5366285/82682 – joce

+5

@Joceチャンスではありません。 – IronMan84

+0

"難しい"部分は、必要な例外をスローする 'DateTime.Parse()'です。残りは60で割ることです。これは欺瞞です。 – joce

答えて

13

次の意志出力2.75

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

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

私はあなたがそれを読んでほしいと思う: 'decimal result = dt.Hour +(dt.Minute/60.0m);' – rsbarro

+0

最良の解決策は 'decimal result = dt.Hour +(dt.Minute/60.0m )+(dt。秒/ 3600.0m); ' – K0D4

関連する問題