Лучший способ превратить целое число в название месяца в с #?

123

Есть ли лучший способ превратить целое число в название месяца в .net?

Очевидно, я могу развернуть datetime, чтобы связать его и проанализировать название месяца оттуда. Это похоже на гигантскую трату времени.

DevelopingChris
источник

Ответы:

20

Почему бы просто не использовать somedatetime.ToString("MMMM")?

leppie
источник
1
Поэтому в любое время, когда мне нужно превратить 1 в январь, мне нужно обновить дату и время с произвольным годом и днем, чтобы просто получить январь?
DevelopingChris
1
Это правильно, в качестве бонуса вы можете иметь его на любом локализуемом языке, который хотите :)
leppie
20

Обновлено с правильным пространством имен и объектом:

//This was wrong
//CultureInfo.DateTimeFormat.MonthNames[index];

//Correct but keep in mind CurrentInfo could be null
DateTimeFormatInfo.CurrentInfo.MonthNames[index];
Овидиу Пакурар
источник
1
Это не работает. Ник Берарди дал правильный ответ.
raven
1
с этого
момента
Понимая, что это старый вопрос, я все же хочу указать, что принятый ответ, предоставленный Ником Беранди, более правильный (по крайней мере, для реализации Microsoft - не уверен насчет Mono), потому что свойство MonthNames всегда клонирует массив названий месяцев, что делает все это немного менее эффективно.
AASoft,
7

Вы можете использовать статический метод из Microsoft.VisualBasicпространства имен:

string monthName = Microsoft.VisualBasic.DateAndTime.MonthName(monthInt, false);
Tokabi
источник
6
DateTime dt = new DateTime(year, month, day);
Response.Write(day + "-" + dt.ToString("MMMM") + "-" + year);

Таким образом, ваш месяц будет отображаться по их имени, а не целым числом.

user1534576
источник
2

Чтобы получить сокращенное значение месяца, вы можете использовать Enum.Parse();

Enum.Parse(typeof(Month), "0");

В результате получится "Ян".

Помните, что это индекс с нулевым отсчетом.

STH
источник