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

ang*_*gel 13 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以后?

Cod*_*ike 18

你可以这样做:

TimeSpan time = ...;
string timeForDisplay = (int)time.TotalHours + time.ToString(@"\:mm\:ss");
Run Code Online (Sandbox Code Playgroud)

  • 当真?...`TimeSpan time = TimeSpan.FromHours(40)+ TimeSpan.FromMinutes(30)` (4认同)
  • 甚至更容易:`TimeSpan time = new TimeSpan(40,30,0)`http://msdn.microsoft.com/en-us/library/bk8a3558.aspx (3认同)

Bal*_*a R 15

试试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);
Run Code Online (Sandbox Code Playgroud)