将类型(双倍)的总小时数转换为格式化时间

时间:2015-04-15 06:27:57

标签: c# timespan

我从这段代码中得到了总时数:

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 个答案:

答案 0 :(得分:1)

由于已经 TimeSpan,您可以将其格式化为;

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

请注意,这些DaysHoursMinutes属性会将整个小时作为int返回。如果您也查找它们的小数部分,也可以使用它们的TotalXXX属性。

使用.NET Framework 4.0,引入了Custom TimeSpan Format Strings。如果您使用此版本或更高版本,则可以使用此自定义格式;

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

答案 1 :(得分:0)

您可能不希望将此转换为totalHours。您只需返回TimeSpan totaltime = (start - end)

即可

答案 2 :(得分:0)

如果你想格式化hh:mm:ss,你可以这样做:

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