angel
angel

Reputation: 271

How do I format a timespan to show me total hours?

I want to save the user's hours worked in a database varchar column, but by default, the formatted value includes days if the number of hours is more than 24. I just want the total number of hours.

For example: if a user works 10:00:00 hours today, then 13:00:00 hours tomorrow, and 3:30:00 hours the day after tomorrow then the formatted total I want is 26:30:00. Instead, I am seeing 1.2:30:00.

How can I get the formatting I want?

Also, when I save the value 40:00:00 in the database manually, and try to read it into a TimeSpan later, I get a bug.

How can I save the hours in the database the way I want, and still be able to read it back into a TimeSpan later?

Upvotes: 26

Views: 41308

Answers (2)

CodingWithSpike
CodingWithSpike

Reputation: 43698

You could do something like:

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

Upvotes: 31

Bala R
Bala R

Reputation: 108937

Try 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);

Upvotes: 24

Related Questions