Формат .NET DateTime "День" без начального нуля
Для следующего кода я ожидаю, что результат будет равен 2, поскольку MSDN заявляет, что 'd' "Представляет день месяца как число от 1 до 31. Однозначный день отформатирован без начального нуля.".
DateTime myDate = new DateTime( 2009, 6, 4 );
string result = myDate.ToString( "d" );
Однако результат фактически равен "6/4/2009" - это формат короткой даты (который также является "d" ). Я мог бы использовать 'dd', но это добавляет начальный ноль, который я не хочу.
Ответы
Ответ 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 и т.д.). Он делает чтение кода немного легче (особенно, если кто-то еще читает/поддерживает его, который не запоминает различные коды форматирования)