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

254

Возможный дубликат:
Как получить MonthName в C #?

Я использовал следующий синтаксис c #, чтобы получить название месяца от месяца нет, но я получаю Augustтолько хочу Aug...

System.Globalization.DateTimeFormatInfo mfi = new 
System.Globalization.DateTimeFormatInfo();
string strMonthName = mfi.GetMonthName(8).ToString();

Любое предложение...

bala3569
источник
3
Помимо .GetMonthName (целое) не возвращает строку , которую вы ищете, это действительно возвращает строку, поэтому .ToString () не требуется
DaveD
1
Не проще ли добавить .Substring (0,3)?
Федерико Наваррете
Возможный дубликат Как получить название месяца в C #?
Cœur

Ответы:

349

Для коротких названий месяцев используйте:

string monthName = new DateTime(2010, 8, 1)
    .ToString("MMM", CultureInfo.InvariantCulture);

Для длинных / полных названий месяцев для испанской ("es") культуры

string fullMonthName = new DateTime(2015, i, 1).ToString("MMMM", CultureInfo.CreateSpecificCulture("es"));
Дарин димитров
источник
Как бы я использовал код выше, если я хочу "Август"? полное название месяца?
Альберт Лор
25
@ User6675636b20796f7521string monthName = new DateTime(2010, 8, 1) .ToString("MMMM", CultureInfo.InvariantCulture);
Роберт Фрике
Это: "string s = new DateTime (1958, month, 1) .ToString (" MMMM ", CultureInfo.InvariantCulture ());" дает мне: «Невозвратный член« System.Globalization.CultureInfo.InvariantCulture »не может использоваться как метод».
Б. Клэй Шеннон
B. Клей Шеннон add () вокруг (новый DateTime (1958, месяц, 1))
ядерная сладость
2
Этот ответ не лучший ИМХО для работы с номером месяца вместо DateTime, как в вопросе OP. Ответ Лассе В. Карлсена более прост для короткого названия месяца. И чтобы получить название месяца в вашей местной культуре, используйте CultureInfo.CurrentCulture, как в ответах CharithJ.
ПОПРАВИТЬ
290

Для сокращенных названий месяцев: «Авг»

Метод DateTimeFormatInfo.GetAbbreviatedMonthName (Int32)

Возвращает специфичное для культуры сокращенное имя указанного месяца на основе культуры, связанной с текущим объектом DateTimeFormatInfo.

string monthName = CultureInfo.CurrentCulture.DateTimeFormat.GetAbbreviatedMonthName(8)

Для полных названий месяцев: «Август»

Метод DateTimeFormatInfo.GetMonthName (Int32)

Возвращает специфичное для культуры полное имя указанного месяца на основе культуры, связанной с текущим объектом DateTimeFormatInfo.

string monthName = CultureInfo.CurrentCulture.DateTimeFormat.GetMonthName(8);
CharithJ
источник
2
GetMonthName возвращает полное название месяца. Если вам это нужно как JAN, FEB и т. Д., Вы можете использовать var month = 10; string monthName = new DateTime (2014, month, 1) .ToString ("MMM", CultureInfo.InvariantCulture) .ToUpper ();
Дмитрий Павлов
3
@DmitryPavlov GetAbbreviatedMonthName()- лучший способ сделать это.
NickG
2
DateTimeFormatInfo должен быть DateTimeFormat (по крайней мере, в .net 4.6)
TravisWhidden
Второй вариант работал для меня, хотя я использовал GetCultureInfo("en-GB")вместо, CurrentCultureпотому что я хотел быть уверен, что мое название месяца всегда будет на английском языке
Морис Климек
Это должен быть лучший ответ. Спас мой день. Спасибо.
Махмуд Эйдарос
85

Заменить GetMonthNameна GetAbbreviatedMonthNameтак, чтобы оно гласило:

string strMonthName = mfi.GetAbbreviatedMonthName(8);
Лассе В. Карлсен
источник
11

Вы можете получить это следующим образом,

DateTimeFormatInfo mfi = new DateTimeFormatInfo();
string strMonthName = mfi.GetMonthName(8).ToString(); //August

Теперь получите первые три символа

string shortMonthName = strMonthName.Substring(0, 3); //Aug
Thili77
источник
9
System.Globalization.CultureInfo.CurrentCulture.DateTimeFormat.GetMonthName(4)

Этот метод возврата April

Если вам нужен специальный язык, вы можете добавить:

<system.web>
    <globalization culture="es-ES" uiCulture="es-ES"></globalization>
     <compilation debug="true"
</system.web>

Или ваш любимый язык.

Например, с es-ESкультурой:

System.Globalization.CultureInfo.CurrentCulture.DateTimeFormat.GetMonthName(4)

Возвращает: Abril

Возвращает: Abril(на испанском, потому что мы настроили culture as es-ESв нашем webconfigфайле, иначе вы получите April)

Это должно работать.

MrMins
источник
5

Это должно вернуть текст месяца (январь - декабрь) из индекса месяца (1-12)

int monthNumber = 1; //1-12  
string monthName = new DateTimeFormatInfo().GetMonthName(monthNumber);
Ришин с
источник
1
Пожалуйста, предоставьте дополнительную информацию. Не просто почтовый индекс
ochs.tobi
1
var month = 5;
var cultureSwe = "sv-SE";
var monthSwe = CultureInfo.CreateSpecificCulture(cultureSwe).DateTimeFormat.GetAbbreviatedMonthName(month);
Console.WriteLine(monthSwe);

var cultureEn = "en-US";
var monthEn = CultureInfo.CreateSpecificCulture(cultureEn).DateTimeFormat.GetAbbreviatedMonthName(month);
Console.WriteLine(monthEn);

Вывод

maj
may
Джоэл Виклунд
источник