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


254

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

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

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

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


3
Помимо .GetMonthName (целое) не возвращает строку , которую вы ищете, это действительно возвращает строку, поэтому .ToString () не требуется
— DaveD

1
Не проще ли добавить .Substring (0,3)?
— Федерико Наваррете

Ответы:


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

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потому что я хотел быть уверен, что мое название месяца всегда будет на английском языке
— Морис Климек

Это должен быть лучший ответ. Спас мой день. Спасибо.
— Махмуд Эйдарос



11

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

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

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

string shortMonthName = strMonthName.Substring(0, 3); //Aug

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)

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


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