I'm not aware of the ability to specify optional parts like that in a custom format string. I suggest you use multiple format strings, and use the overload of TimeSpan.ParseExact
that takes an array of formats.
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);
}
(I'm using FFF
as the milliseconds specifier to allow you to express "1:23:45.67" as well. If you only ever want hundreds of milliseconds, F
or f
would be fine.)
与恶龙缠斗过久,自身亦成为恶龙;凝视深渊过久,深渊将回以凝视…