以下关于timepan到datetime的代码如何真正起作用?

时间:2011-01-15 01:12:30

标签: c# .net datetime string-formatting

我有HH:mm:来自数据库的ss,HH超过100。 我有大约3行的数据。

我想用HH计算总显示:mm:ss。

所以,我把HH:mm:ss分成了第二名,我得到了第二名。我这样工作。

TimeSpan t = TimeSpan.FromSeconds(TTTot); 
string answer="";
answer = string.Format("{0:D2}:{1:D2}:{2:D2}", t.Hours, t.Minutes, t.Seconds);
answer = string.Format("{0:D2}-{1:D2}:{2:D2}:{3:D2}", t.Days, t.Hours, t.Minutes, t.Seconds);    
answer = string.Format("{0:D5}:{1:D2}:{2:D2}",t.TotalHours, t.Minutes, t.Seconds);

答案的第一行是我的原始代码。我只看到了大约15个小时,而总价值大约为130个。

所以我升级到了第二行答案,与第一天一起显示。这很有效。

但是,我想显示总时数。所以我将代码修改为第三行,我将异常作为

Invalid format exception

我想知道如何扭转以获得我想要的结果。 HH:mm:带有HH的ss可能有百个值。

1 个答案:

答案 0 :(得分:3)

MSDN Library page非常相关。它说的是D或d格式说明符:

  

“D”(或十进制)格式说明符   将数字转换为字符串   十进制数字(0-9),以a为前缀   减号如果数字为负数。   仅支持此格式   整体类型

这是一个问题,TimeSpan.Hours返回 double 值,而不是像TimeSpan.Minutes那样的整数值。您可以通过截断(而不是舍入)double值来解决此问题,如下所示:

answer = string.Format("{0:D5}:{1:D2}:{2:D2}",
   (int)t.TotalHours, t.Minutes, t.Seconds);