Как мне отформатировать интервал времени, чтобы показать мне общее количество часов? - PullRequest
12 голосов
/ 20 мая 2011

Я хочу сохранить количество часов, отработанных пользователем, в столбце базы данных varchar, но по умолчанию форматированное значение включает дни, если количество часов превышает 24. Мне просто нужно общее количество часов.

Например: если пользователь работает 10:00:00 часов сегодня, затем 13:00:00 часов завтра и 3:30:00 часов послезавтра, то отформатированный итог, который я хочу, равен 26:30:00. , Вместо этого я вижу 1.2:30: 00.

Как я могу получить необходимое форматирование?

Также, когда я вручную сохраняю значение 40:00:00 в базе данных и пытаюсь прочитать его в TimeSpan позже, я получаю ошибку.

Как я могу сохранить часы в базе данных так, как я хочу, и при этом иметь возможность считывать их обратно в TimeSpan позже?

Ответы [ 2 ]

18 голосов
/ 20 мая 2011

Вы можете сделать что-то вроде:

TimeSpan time = ...;
string timeForDisplay = (int)time.TotalHours + time.ToString(@"\:mm\:ss");
15 голосов
/ 20 мая 2011

Попробуйте 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);
...