Подтвердить что ты не робот

Формат .NET DateTime "День" без начального нуля

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

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

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

4b9b3361

Ответ 1

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

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

MSDN

Ответ 2

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

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

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

string result = myDate.Day.ToString();

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