以下有关时间跨度到日期时间的代码实际上如何工作?

发布于 2024-10-11 19:42:35 字数 708 浏览 4 评论 0原文

我从数据库中获取了 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 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(1

我最亲爱的 2024-10-18 19:42:35

MSDN 库页面 非常相关。它是关于 D 或 d 格式说明符的:

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

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

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

This MSDN Library page is very relevant. It says this about the D or d format specifier:

The "D" (or decimal) format specifier
converts a number to a string of
decimal digits (0-9), prefixed by a
minus sign if the number is negative.
This format is supported only for
integral types
.

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:

answer = string.Format("{0:D5}:{1:D2}:{2:D2}",
   (int)t.TotalHours, t.Minutes, t.Seconds);
~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文