解析确切的自定义时间格式?

rdo*_*eui 1 c# timespan

我似乎无法获得适合我的自定义格式TimeSpan.ParseExact():

预期的时间样本:

1:23:45.6
23:45.6
23:45
1:23:45
Run Code Online (Sandbox Code Playgroud)

我正在使用的字符串格式:

string withTenthFormat = @"[%h\:]mm\:ss[\.%f]";
Run Code Online (Sandbox Code Playgroud)

试着有时间和几分之一秒.然而,使用这种格式和CultureInfo.InvariantCulture确实导致a FormatException.我错过了什么?

Jon*_*eet 8

我不知道能够在自定义格式字符串中指定类似的可选部分.我建议你使用多个格式字符串,并使用TimeSpan.ParseExact带有一系列格式的重载.

string[] formats = { @"h\:mm\:ss\.FFF", @"mm\:ss\.FFF",
                     @"h\:mm\:ss", @"mm\:ss"};
string[] values = { "1:23:45.6", "23:45.6", "23:45", "1:23:45" };

foreach (string value in values)
{
    var parsed = TimeSpan.ParseExact(value, formats,
                                     CultureInfo.InvariantCulture);
    Console.WriteLine(parsed);
}
Run Code Online (Sandbox Code Playgroud)

(我用FFF的毫秒符,让你表达"1:23:45.67".还有如果你只是曾经想几百毫秒,Ff将被罚款.)