将 TimeSpan 值显示为经过时间的最简单方法,例如 1:45:33

发布于 2024-09-03 05:51:21 字数 156 浏览 6 评论 0原文

我想要一种简单的方法来将任何 TimeSpan 显示为经过的时间,而不使用循环或自定义逻辑
例如,

hours : minutes : seconds

我确信必须有一个适用的 .NET 内置或格式字符串,但我无法找到它。

I'd like an easy way to display any TimeSpan as an elapsed time without using loops or custom logic
e.g.

hours : minutes : seconds

I'm sure there must be a .NET built-in or format string that applies, however I'm unable to locate it.

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

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

发布评论

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

评论(5

野の 2024-09-10 05:51:21

问题本身不是重复的,但我认为答案就是您正在寻找的 - 使用 String.Format 自定义格式时间跨度。为了进一步简化您的解决方案,您可以将该功能包装在 Timespan 的扩展方法中。

The question itself isn't a duplicate but the answer, I assume, is what you are looking for - Custom format Timespan with String.Format. To simplify your solution further you could wrap that functionality up in an extension method of Timespan.

北城孤痞 2024-09-10 05:51:21

TimeSpan.ToString() 有什么问题吗?

编辑:您可以使用 DateTime 作为中间格式存储:

TimeSpan a = new TimeSpan(1, 45, 33);
string s = string.Format("{0:H:mm:ss}", new DateTime(a.Ticks));
Console.WriteLine(s);

不漂亮但有效。

What's wrong with TimeSpan.ToString()?

EDIT: You can use a DateTime as an intermediate formatting store:

TimeSpan a = new TimeSpan(1, 45, 33);
string s = string.Format("{0:H:mm:ss}", new DateTime(a.Ticks));
Console.WriteLine(s);

Not pretty but works.

泪是无色的血 2024-09-10 05:51:21

您可以使用:

TimeSpan t = TimeSpan.FromSeconds(999);
string s = t.ToString("c");  // s = "00:16:39"

对于自定义格式,请参阅此 MSDN 页面

You can use:

TimeSpan t = TimeSpan.FromSeconds(999);
string s = t.ToString("c");  // s = "00:16:39"

For custom formats, see this MSDN page.

没有伤那来痛 2024-09-10 05:51:21

这是我用于自定义格式的方法:

TimeSpan Elapsed = TimeSpan.FromSeconds(5025);
string Formatted = String.Format("{0:0}:{1:00}:{2:00}",
    Math.Floor(Elapsed.TotalHours), Elapsed.Minutes, Elapsed.Seconds);
// result: "1:23:45"

我不知道这是否符合“无自定义逻辑”的条件,但它与 .NET 3.5 兼容并且不涉及循环。

Here is a method I use for custom formatting:

TimeSpan Elapsed = TimeSpan.FromSeconds(5025);
string Formatted = String.Format("{0:0}:{1:00}:{2:00}",
    Math.Floor(Elapsed.TotalHours), Elapsed.Minutes, Elapsed.Seconds);
// result: "1:23:45"

I don't know if that qualifies as "without custom logic," but it is .NET 3.5 compatible and doesn't involve a loop.

只等公子 2024-09-10 05:51:21

使用这个: .ToString()

根据MSDN,显示的默认格式[-][d.]hh:mm:ss[.fffffff]< /代码>。这是将 TimeSpan 值显示为经过时间的最快、最简单的方法,例如 1:45:33

如果您有秒的小数部分负值,请使用MSDN。这看起来像 .ToString(@"hh\:mm\:ss")

示例:

TimeSpan elapsed = new TimeSpan(0, 1, 45, 33);
Console.WriteLine(elapsed.ToString());             //outputs: "1:45:33"
Console.WriteLine(elapsed.ToString(@"hh\:mm\:ss"));//outputs: "1:45:33"

Use This: .ToString()

According to MSDN, the default format this displays is [-][d.]hh:mm:ss[.fffffff]. This is the quickest and easiest way to display TimeSpan value as an elapsed time e.g. 1:45:33

If you have days, fractions of a second, or a negative value, use a custom format string as described in MSDN. This would look like .ToString(@"hh\:mm\:ss")

Example:

TimeSpan elapsed = new TimeSpan(0, 1, 45, 33);
Console.WriteLine(elapsed.ToString());             //outputs: "1:45:33"
Console.WriteLine(elapsed.ToString(@"hh\:mm\:ss"));//outputs: "1:45:33"
~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文