I can't seem to get the custom format right for my TimeSpan.ParseExact()
:
Time samples to be expected:
1:23:45.6
23:45.6
23:45
1:23:45
The string format I'm using:
string withTenthFormat = @"[%h\:]mm\:ss[\.%f]";
Trying to have hours and fractions of seconds optionally. However using this format and an CultureInfo.InvariantCulture
does lead to a FormatException
. What am I missing?
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.)
See more on this question at Stackoverflow