以下有关时间跨度到日期时间的代码实际上如何工作?
我从数据库中获取了 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:ss 与 HH 可能有一百个值。
I have HH:mm:ss from database with HH is more than 100.
I have data like that for about 3 rows.
I want to calculate the total show in HH:mm:ss.
So, I split that HH:mm:ss to second and I get total second. And I work like this.
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);
The first line of the answer is my original code. I only saw around 15 hours while there are around 130 in total values.
So I upgraded to second line of answer which shows together with day. That works.
However, I would like to show total hour. So i modify the code to the third line where I get the exception as
Invalid format exception
I wonder how to twist to get the result I want. HH:mm:ss with HH may b in hundred values.
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(1)
此 MSDN 库页面 非常相关。它是关于 D 或 d 格式说明符的:
这是一个问题,TimeSpan.Hours 返回一个 double 值,而不是像 TimeSpan.Minutes 那样的整数值。您可以通过截断(而不是四舍五入)双精度值来解决此问题,如下所示:
This MSDN Library page is very relevant. It says this about the D or d format specifier:
Which is a problem, TimeSpan.Hours returns a double value, not an integral value, like TimeSpan.Minutes does. You can fix this problem by truncating (not rounding) the double value, like this: