Перетворити місяць 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.