Почему DateTime.ToString («h») ) вызвать исключение?

Открыть окно просмотра

new DateTime(2010,01,01).ToString("h")

Дает:

new DateTime (2010,01,01) .ToString ("h" ) выдало исключение типа System.FormatException

Пока ...

new DateTime(2010,01,01).ToString("h ")

Дает: " Это ошибка?

21
задан Martin Capodici 21 October 2016 в 02:53
поделиться

1 ответ

Это потому, что он думает, что это стандартная строка формата вместо пользовательской строки , потому что это один символ.

Лучший способ исправить это - использовать % :

string text = DateTime.Now.ToString("%h");

Из документации по строкам настраиваемого формата:

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

Чтобы использовать любую из настраиваемых даты и времени спецификаторы формата как единственные спецификатор в строке формата (то есть использовать "d", "f", "F", "g", "h", «H», «K», «m», «M», «s», «t», «y», произвольный формат "z", ":" или "/" спецификатор сам по себе), включите пробел до или после спецификатора, или включить процентный формат ("%") спецификатор перед одиночным заказом указатель даты и времени.

Например, «% h» интерпретируется как строка настраиваемого формата даты и времени который отображает час, представленный текущее значение даты и времени. Ты также можно использовать формат "h" или "h" строка, хотя она включает пробел в строке результата вместе с час. Следующий пример иллюстрирует эти три формата струны.

43
ответ дан 29 November 2019 в 20:28
поделиться
Другие вопросы по тегам:

Похожие вопросы: