TimeSpan.ParseExact не распознает формат ввода

1

Я знаю, что таких вопросов много, но я не могу найти ответ на свой вопрос.

У меня есть эта строка кода С#:

var x = TimeSpan.ParseExact("800", "hmm", CultureInfo.InvariantCulture);

И он выдает исключение, говоря, что формат ввода недействителен. Если я поставлю "0800" и "hhmm", он работает. Я видел, как люди используют единственный "h" в TimeSpan-Conversions, поэтому это должно быть возможно. Также нет специальных писем, которые нужно было бы избежать.

Я попытался использовать CurrentCulture вместо InvariantCulture, но это ничего не изменило. Прямо сейчас, я заполняю свои строки, чтобы иметь 0 с левой стороны, но я хотел бы знать, почему TimeSpan-Parsing не удалось.

Теги:
time-format

1 ответ

2
Лучший ответ

Я не знаю, почему это так или где это задокументировано, но трехзначные временные интервалы, похоже, не поддерживаются в TimeSpan.ParseExact. Таким образом, вы могли бы обойти это, заполнив его ведущими нулями:

string ts = "800";
var x = TimeSpan.ParseExact(ts.PadLeft(4, '0'), "hhmm", CultureInfo.InvariantCulture);

Я предполагаю, что причина, по которой TimeSpan не может разобрать это, связана с тем, почему DateTime.ParseExact не может разобрать 7 цифр с одним или двумя цифрами месяца и без разделителя.

  • 0
    @Manuel Hoffmann: «Прямо сейчас я добавляю свои строки, чтобы нули были слева». До сих пор я не видел, что это уже ваш обходной путь. Может быть, мое последнее предложение имеет дополнительную ценность.
  • 0
    Вы правы, я уже это делаю. Какое странное поведение на стороне C #.

Ещё вопросы

Сообщество Overcoder
Наверх
Меню