web-dev-qa-db-ja.com

合計時間を表示するようにタイムスパンをフォーマットするにはどうすればよいですか?

データベースのvarchar列にユーザーの勤務時間を保存したいのですが、デフォルトでは、時間数が24を超える場合、フォーマットされた値には日数が含まれます。合計時間数が必要です。

たとえば、ユーザーが今日10:00:00時間、明日13:00:00時間、明後日3:30:00に勤務している場合、必要なフォーマットされた合計は26:30:00です。代わりに、1.2:30:00が表示されます。

必要なフォーマットを取得するにはどうすればよいですか?

また、値40:00:00をデータベースに手動で保存し、後でそれをTimeSpanに読み取ろうとすると、バグが発生します。

どうすればデータベースの時間を希望どおりに保存し、後でTimeSpanに読み戻すことができますか?

16
angel

試してください TimeSpan.TotalHours

String timeStamp = "40:00:00";
var segments = timeStamp.Split(':');

TimeSpan t = new TimeSpan(0, Convert.ToInt32(segments[0]), 
               Convert.ToInt32(segments[1]), Convert.ToInt32(segments[2]));
string time = string.Format("{0}:{1}:{2}", 
           ((int) t.TotalHours), t.Minutes, t.Seconds);
17
Bala R

あなたは次のようなことをすることができます:

TimeSpan time = ...;
string timeForDisplay = (int)time.TotalHours + time.ToString(@"\:mm\:ss");
20
CodingWithSpike