Формат .NET DateTime "День" без начального нуля - PullRequest
22 голосов
/ 12 июня 2009

Для следующего кода я бы ожидал, что результат будет равен 2, поскольку в MSDN указано, что 'd' "представляет день месяца в виде числа от 1 до 31. День, состоящий из одной цифры отформатирован без начального нуля. "

DateTime myDate = new DateTime( 2009, 6, 4 );
string result = myDate.ToString( "d" );

Однако, результат фактически равен '6/6/2009' - это формат краткой даты (который также 'd'). Я мог бы использовать «dd», но это добавляет начальный ноль, чего я не хочу.

Ответы [ 2 ]

43 голосов
/ 12 июня 2009

Чтобы указать, что это спецификатор пользовательского формата (в отличие от стандартного спецификатора формата), он должен содержать два символа. Это может быть достигнуто путем добавления пробела (который будет отображаться в выходных данных) или путем добавления знака процента перед одной буквой, например:

string result = myDate.ToString("%d");

MSDN

5 голосов
/ 13 июня 2009

Вместо использования строк форматирования строк, как насчет использования свойства Day

DateTime myDate = new DateTime(2009,6,4)
int result = myDate.Day;

Или, если вам действительно нужен результат в строковом формате

string result = myDate.Day.ToString();

Если вы хотите получить определенную часть даты из объекта даты, а не отформатированное представление даты, я предпочитаю использовать свойства (День, Месяц, Год, DayOfWeek и т. Д.). Это делает чтение кода немного проще (особенно если кто-то читает / поддерживает его, не запомнив различные коды форматирования)

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...