2016-03-23 9 views
1

私はTimeSpan.TotalHoursから24,75時間です。 これを変換して丸め時間(= 24)と分(0,75時間= 45分)の合計を得る方法はありますか?したがって、結果は時間= 24、分= 45となるはずです時報からの抽出時間と分数

文字列に変換して部分文字列を作成しようとしましたが、これよりも良い方法があるかどうかを知りたいと思います。

string test = Reststunden.TotalHours.ToString().Substring(Reststunden.TotalHours.ToString().IndexOf(","),3).Replace(",", ""); 
double Minuten = Convert.ToInt16(test) * 0.6; 

答えて

4

var ts = TimeSpan.FromHours(24.75); 
var h = System.Math.Floor(ts.TotalHours); 
var m = (ts.TotalHours - h) * 60; 

あるいは:

var h = (int) (ts.TotalMinutes/60); 
var m = ts.TotalMinutes % 60; 
+0

それは時間を丸めて、私はそれらをunrounded必要があります –

+0

これはかなりうまく動作し、 –

+0

私はまだSkeetの答えがより好きです:-) – lesscode

3

まあちょうど総時間ラウンド適切にキャストし、その後Minutesプロパティを使用することにより:

int hours = (int) timeSpan.TotalHours; 
int minutes = timeSpan.Minutes; 

あなたは否定TimeSpanを持っているだろう場合、あなたは結果が欲しいものを考える必要があります適切なテストを追加して追加することができます。上記の単純なコードでは、あなたが望むことができないことがよく分かります。

についてどのように
+2

なぜ代わりに、時間のTotalHoursを使うのか? –

+2

TotalHoursを49にすることができます。この場合、時間は1になります。いいえ?私が@Jon Skeetが質問に答えたときはいつでも、その質問に答えます。名誉毀損、私の友人。 –

+0

@o_weisman:マックスが言ったことはまさに、基本的に。 'Hours'プロパティのドキュメントを読んでOPのリクエストと比較してください。 –

関連する問題