2013-03-04 6 views
6

多くのデータを集めたコードがありましたので、私は木曜日に開始し、週末にそれを実行しました。月曜日、私は戻って来て、それが終わったのを見ました。ストップウォッチ機能を使用して、コードが実行された時間の長さを追跡しました。しかし、私はストップウォッチ経過出力

Elapsed: 2.18:57:55.xxx 

になってしまった私はそれが出力だと理解し、通常Hである:M:SS、しかし、それは日のために実行されています、特に以来、最初の桁を理解していません。それは時間から日に変換しただけですか?私はそれが壊れたようにそれを長く走らせたままにしましたか?

編集:申し訳ありませんが、月曜日に終了したというわけではありません。私はちょうど月曜日(私がコンピュータに戻ったとき)までにそれが行われたことを意味しました。

+0

もう何もしていないときは、マシンはおそらくサスペンド/休止状態でしたか? –

+0

出力でToString()を呼び出しましたか? –

+0

:木曜日ではなく金曜日に実際に始める可能性はありますか? –

答えて

8

はい - それはTimeSpan.ToStringのフォーマットは次のとおり

返される文字列は "C" 形式指定子でフォーマットし、次のフォーマットを有する:

[ - ] [D] HH:MM :ss [.fffffff]

[]と[]で囲まれた要素は、返される文字列に含まれない場合があります。コロンとピリオド(:と。)はリテラル文字です。非リテラル要素を次の表に示します。 ToString()メソッドによって返される文字列は、カルチャーセンシティブではないことに注意してください。

合計時間を示す書式指定子がないため、計算する必要があります。時間を単一の数字として表示するには、次のようにします。

TimeSpan ts = new TimeSpan(2,18,57,55); 

var output = string.Format("{0}:{1}", 
          ts.Days*24 + ts.Hours, 
          ts.ToString("mm\\:ss\\.ffff")); 

//output = `66:57:55.0000` 
+3

木曜日に始まり、月曜日にチェックされた場合、中央には金曜日、土曜日、日曜日のすべてがあります。私たちは '3.something'を期待するでしょうか? –

+0

使いやすい 'ts.TotalHours' – SysDragon

+1

@SysDragonの場合、TotalHoursには小数部が含まれていますが小数点なしでフォーマットすると切り上げられますが、数字を切り捨てることはできますが、それは本当に簡単でしょうか? –

0

これは予想される動作です。 Timespan.ToString()ためのドキュメントから:

返される文字列は "C" 形式指定子でフォーマットし、次のフォーマットを有する:

[ - ] [D] HH:MM:SS [.fffffff]

"d" - 時間間隔の日数。この要素は、時間間隔が1日未満の場合は省略されます。

+0

木曜日に開始され、月曜日にチェックされた場合、中央に金曜日、土曜日、日曜日があります。私たちは '3.something'を期待するでしょうか? –

+0

@MarcGravell質問は不明であったが、アップデートから、質問は出力値ではなく出力値に関するものであることは明らかである。 –

関連する問題