TimeSpan到自定义字符串,如HH:mm:ss

Dev*_*per 6 .net c# timespan time-format

我想转换

var delta = TimeSpan.FromSeconds(10);
Run Code Online (Sandbox Code Playgroud)

像字符串一样 00:00:01

我试试这个 delta.ToString(@"0:\\hh\\:mm\\:ss", System.Globalization.CultureInfo.InvariantCulture);

但没有什么工作正常.另外我在这里找不到https://msdn.microsoft.com/en-us/library/ee372287.aspx这样做的正确方法.

方法ToString()没有帮助所以我需要格式谎言hh:mm:ss.

在此输入图像描述 任何线索?

Man*_*tra 11

只需使用TimeSpan的ToString(String format)方法,传入所需的格式即可。

https://msdn.microsoft.com/zh-CN/library/dd992632(v=vs.110).aspx

例如

var ts = TimeSpan.FromMinutes(10000);
var output = ts.ToString(@"hh\:mm\:ss");
Console.WriteLine(output);
Run Code Online (Sandbox Code Playgroud)

  • 如果“hh”部分超过24,这将不起作用。它只会提供“hh”的HOURS 部分,即,如果TimeSpan 是36 小时+某个值,它将为“hh”显示12。您可以使用以下代码获得该情况的正确输出 - `String.Format("{0}:{1}:{2}", Math.Floor(ts.TotalHours), ts.Minutes, ts.Seconds) ` (4认同)
  • 比最受好评的答案好得多 (2认同)

Zei*_*kki 7

只需使用:

delta.ToString(); // 00:00:10
Run Code Online (Sandbox Code Playgroud)

这对你来说很有用(小提琴)

或试试这个:

var str = string.Format("{0:00}:{1:00}:{2:00}", delta.Hours, delta.Minutes, delta.Seconds);
Run Code Online (Sandbox Code Playgroud)

如果你经常使用它,你可以构建一个扩展方法:

public static class MyExtensions
{
    public static string ToCustomString(this TimeSpan span)
    {
        return string.Format("{0:00}:{1:00}:{2:00}", span.Hours, span.Minutes, span.Seconds);
    }
}
Run Code Online (Sandbox Code Playgroud)

用法:

string strSpan = delta.ToCustomString();
Run Code Online (Sandbox Code Playgroud)

  • 不,它不是给出秒和毫秒之类的 00:08:59.4199537 (3认同)