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


123

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

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

Ответы:



20

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


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);

6
DateTime dt = new DateTime(year, month, day);
Response.Write(day + "-" + dt.ToString("MMMM") + "-" + year);

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


2

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

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

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

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

Используя наш сайт, вы подтверждаете, что прочитали и поняли нашу Политику в отношении файлов cookie и Политику конфиденциальности.
Licensed under cc by-sa 3.0 with attribution required.