C# ParseExact TimeSpan не распознается

У меня есть простая строка arrayData, которую я пытаюсь запустить TimeSpan.ParseExact, и я получаю недопустимые ошибки формата. Для жизни я не могу понять, что я делаю не так, и это сводит меня с ума

string arrayData = "00:02:02.4000000";
string[] formats = new string[] {
  @"s\.f",
  @"ss\.f",
  @"ss\.ff",
  @"m\:ss\.f",
  @"m\:ss\.ff",
  @"mm\:ss\.ff",
  @"hh\:mm\:ss\.ff",
  @"dd\.hh\:mm\:ss"
};

CultureInfo culture = new CultureInfo("en-US");

TimeSpan _timeSpan = TimeSpan.ParseExact(arrayData, formats, culture.NumberFormat);

1 ответ

Решение

С ParseExactВам необходимо указать точный формат. В вашем случае вам нужно разрешить семь дробных секунд, а не только две.

string arrayData = "00:02:02.4000000";
string[] formats = new string[] { 
    @"s\.f",
    @"ss\.f",
    @"ss\.ff",
    /* ... */ 
    @"hh\:mm\:ss\.fffffff"   // <- missing format
};
TimeSpan _timeSpan = TimeSpan.ParseExact(arrayData, formats, CultureInfo.InvariantCulture);
Другие вопросы по тегам