Перетворити місяць int на назву місяця


82

Я просто намагався використовувати DateTimeструктуру для перетворення цілого числа від 1 до 12 в скорочене ім'я місяця.

Ось те, що я спробував:

DateTime getMonth = DateTime.ParseExact(Month.ToString(), 
                       "M", CultureInfo.CurrentCulture);
return getMonth.ToString("MMM");

Однак я отримую a FormatExceptionу першому рядку, оскільки рядок не є дійсним DateTime. Хто-небудь може сказати мені, як це зробити?

Відповіді:


139
CultureInfo.CurrentCulture.DateTimeFormat.GetMonthName(1);

Детальніше див. Тут .

Або

DateTime dt = DateTime.Now;
Console.WriteLine( dt.ToString( "MMMM" ) );

Або якщо ви хочете отримати скорочену назву для конкретної культури .

GetAbbreviatedMonthName(1);

Довідково


8
GetAbbreviatedMonthName()здається доречним.
Bala R

Що протилежне цьому? ввести назву місяця і повернути число назад?
Алок Раджасукумаран,

1
int month = DateTime.ParseExact(MonthNameValue, "MMMM", CultureInfo.CurrentCulture ).Month
CharithJ

це не назва місяця, це дата і час місяця
sairfan

28
var monthIndex = 1;
return month = DateTimeFormatInfo.CurrentInfo.GetAbbreviatedMonthName(monthIndex);

Ви можете спробувати і цей


4
Просто щоб додати щось до цієї хорошої відповіді, DateTimeFormatInfo знаходиться всередині System.Globalization, тоді потрібно імпортувати цей простір імен.
BernieSF

12

Можна замість цього зробити щось подібне.

return new DateTime(2010, Month, 1).ToString("MMM");

0
CultureInfo.CurrentCulture.DateTimeFormat.GetMonthName(
    Convert.ToInt32(e.Row.Cells[7].Text.Substring(3,2))).Substring(0,3) 
    + "-" 
    + Convert.ToDateTime(e.Row.Cells[7].Text).ToString("yyyy");

Звідки eвзагалі береться ?!
Стюарт Склінар
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.