Я знаю, что таких вопросов много, но я не могу найти ответ на свой вопрос.
У меня есть эта строка кода С#:
var x = TimeSpan.ParseExact("800", "hmm", CultureInfo.InvariantCulture);
И он выдает исключение, говоря, что формат ввода недействителен. Если я поставлю "0800" и "hhmm", он работает. Я видел, как люди используют единственный "h" в TimeSpan-Conversions, поэтому это должно быть возможно. Также нет специальных писем, которые нужно было бы избежать.
Я попытался использовать CurrentCulture вместо InvariantCulture, но это ничего не изменило. Прямо сейчас, я заполняю свои строки, чтобы иметь 0 с левой стороны, но я хотел бы знать, почему TimeSpan-Parsing не удалось.
Я не знаю, почему это так или где это задокументировано, но трехзначные временные интервалы, похоже, не поддерживаются в TimeSpan.ParseExact
. Таким образом, вы могли бы обойти это, заполнив его ведущими нулями:
string ts = "800";
var x = TimeSpan.ParseExact(ts.PadLeft(4, '0'), "hhmm", CultureInfo.InvariantCulture);
Я предполагаю, что причина, по которой TimeSpan
не может разобрать это, связана с тем, почему DateTime.ParseExact
не может разобрать 7 цифр с одним или двумя цифрами месяца и без разделителя.