Parse exact custom time format?

前端 未结 2 2108
小鲜肉
小鲜肉 2020-12-22 00:37

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
         


        
2条回答
  •  一个人的身影
    2020-12-22 01:09

    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.)

提交回复
热议问题