Преобразование общего количества часов с типом (double) в форматированное время

Я получаю полный час из этого кода:

string date = Request.Form[DFrom.UniqueID];
string date1 = Request.Form[DTo.UniqueID]; ;

DateTime start = DateTime.ParseExact(date, "MM/dd/yyyy hh:mm tt", null);
DateTime end = DateTime.ParseExact(date1, "MM/dd/yyyy hh:mm tt", null);
totaltime = (start - end).TotalHours;

Вывод будет таким:

25,44535

Я хочу преобразовать общее количество часов в форматированное время, например, так: 44:12:00

3 ответа

Решение

Так как у вас уже есть TimeSpanВы можете отформатировать это как;

var ts = (start - end);
Console.WriteLine("{0:00}:{1:00}:{2:00}", ts.Days, ts.Hours, ts.Minutes); // 01:01:26

Помните, эти Days, Hours а также Minutes свойства возвращают целые часы как int, Если вы ищете их дробные части, вы можете использовать их TotalXXX свойства также.

В.NET Framework 4.0 введены пользовательские строки формата TimeSpan. Если у вас есть эта версия или выше, вы можете использовать этот пользовательский формат, а также как;

Console.WriteLine("{0:dd\\:hh\\:mm}", ts);

Если вы хотите иметь формат чч: мм: сс, вы можете сделать так:

TimeSpan ts = start- end;
string st = String.Format("{0:00}:{1:00}:{2:00}", ts.Days*24+ts.Hours, ts.Minutes, ts.Seconds);

Вероятно, вы не хотите конвертировать это в totalHours. Вы можете просто вернуть TimeSpantotaltime = (start - end)

Другие вопросы по тегам