如何格式化时间跨度以显示总小时数?

时间:2011-05-20 15:45:31

标签: c# timespan

我想保存用户在数据库varchar列中工作的小时数,但默认情况下,如果小时数超过24,则格式化值包括天数。我只想要总数小时。

例如:如果用户今天工作10:00:00,明天13:00:00,后天3:30:00,那么我想要的格式化总数是26:30:00 。相反,我看到的是1.2:30:00。

如何获得我想要的格式?

此外,当我手动将值40:00:00保存在数据库中,并尝试稍后将其读入TimeSpan时,我收到了一个错误。

如何以我想要的方式保存数据库中的小时数,并且以后仍可以将其读回TimeSpan

2 个答案:

答案 0 :(得分:18)

您可以执行以下操作:

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

答案 1 :(得分:14)

尝试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);