C# 零填充TimeSpan.ToString(字符串)

C# 零填充TimeSpan.ToString(字符串),c#,formatting,timespan,C#,Formatting,Timespan,我想从TimeSpan对象创建一个字符串,该对象的格式为:“hhh:mm:ss.ff” 当我使用以下命令时,我得到一个FormatException private const string MAX_TIME_ALLOWED_FORMAT = @"hhhh\:mm\:ss.ff"; String myDurationSring = TimeSpan.FromSeconds(myDurationInSeconds).ToString(MAX_TIME_ALLOWED_FORMAT) : stri

我想从TimeSpan对象创建一个字符串,该对象的格式为:“hhh:mm:ss.ff”

当我使用以下命令时,我得到一个FormatException

private const string MAX_TIME_ALLOWED_FORMAT = @"hhhh\:mm\:ss.ff";

String myDurationSring = TimeSpan.FromSeconds(myDurationInSeconds).ToString(MAX_TIME_ALLOWED_FORMAT) : string.Empty;
我的格式字符串需要做些工作吗?或者有更好的方法吗?

试试:

"hhhh:mm:ss.ff"
作为格式字符串。我猜你是想逃离上校。你不需要。如果输出中需要冒号,请尝试:

"hhhh\\:mm\\:ss.ff"

TimeSpan.ToString
不支持显示总小时数的-它只能显示小时部分,最大值为23

我将使用一个格式字符串,它接受
TimeSpan
的各个组件:

String myDurationSring =
    string.Format("{0:0000}:{1:00}:{2:00}.{3:00}",
                  (int)(ts.TotalHours), 
                  ts.Minutes, 
                  ts.Seconds, 
                  ts.Milliseconds/10.0);

我认为最简单、最干净的方法是插值:

var myDurationSring = $"{ts.Hours:0000}:{ts.Minutes:00}:{ts:Seconds:00}.{ts.Milliseconds/10.0}";

TimeSpan
要求分隔符作为字符串文本包含,因此需要转义字符。D Stanley的答案是我想要的,但导致异常的是格式字符串中的“.”-它还需要一个“\”在它之前。@theevillpenguin甚至修复它会导致异常,因为它不是一个有效的格式字符串。@DStanley啊,我忘了我在测试它时也删除了前两个'h'。