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


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.