Parse exact custom time format?

前端 未结 2 2107
小鲜肉
小鲜肉 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:34

    I would simply use DateTime.ParseExact instead because it's more powerful:

    string[] strings = new[] { "1:23:45.6", "23:45.6", "23:45", "1:23:45" };
    string[] formats = new[] { "H:mm:ss.f", "H:mm.f", "H:mm", "H:mm:ss" };
    TimeSpan[] timespans = strings
        .Select(str =>
        {
            TimeSpan? ts = null;
            DateTime dt;
            if (DateTime.TryParseExact(str, formats, CultureInfo.InvariantCulture, DateTimeStyles.None, out dt))
                ts = dt.TimeOfDay;
            return ts;
        })
        .Where(ts => ts.HasValue)
        .Select(ts => ts.Value)
        .ToArray();
    

    Demonstration

提交回复
热议问题