Ошибка «Входная строка была в неправильном формате» при попытке отобразить часть часа с помощью «h» - PullRequest
6 голосов
/ 26 января 2012

Я пытаюсь отобразить поле даты и времени, используя только часть часа, без начальных нулей для однозначных часов, как в: return string.Format("{0:h}", MyDateTimefield), но я получаю сообщение об ошибке «Неправильный формат входной строки».Почему?

return string.Format("{0:hh}", MyDateTimefield) работает.Ищете правильный формат, а не обходной путь.

Ответы [ 2 ]

16 голосов
/ 26 января 2012

С соответствующие документы :

Если спецификатор формата "h" используется без других пользовательских спецификаторов формата, он интерпретируется как стандартный спецификатор формата даты и времени и вызывает исключение FormatException. Для получения дополнительной информации об использовании одного спецификатора формата см. Использование отдельных пользовательских спецификаторов формата далее в этом разделе.

Переходя по этой ссылке, вы получаете:

Чтобы использовать любой из пользовательских спецификаторов формата даты и времени в качестве единственного спецификатора в строке формата […], добавьте пробел до или после спецификатора или включите спецификатор формата процента ("%") перед одиночным указатель даты и времени.

2 голосов
/ 26 января 2012

С эта ссылка с использованием h является правильным форматом для часа без нуля 0. Очень интересно .. Кажется, работает следующее:

return string.Format("{0: h}", MyDateTimefield)
return string.Format("{0:h }", MyDateTimefield)
return string.Format("{0:h:m}", MyDateTimefield)

Но как тольковы вводите return string.Format("{0:h}", MyDateTimefield), это вызывает исключение.

Почему я не уверен.Если у вас все в порядке с пробелом, первые 2 строки должны работать.

...