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

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

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

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

2 ответа

Решение

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

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

MSDN

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

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

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

string result = myDate.Day.ToString();

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

Другие вопросы по тегам