2010-07-06 4 views
184

Можно создать дубликат:
How to get the MonthName in c#?Получить название месяца от номера месяца

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

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

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

+2

Кроме того .GetMonthName (int) не возвращает строку, которую вы ищете, она * возвращает * строку, поэтому .ToString() не требуется – DaveD

+1

Не проще было бы просто добавить .Substring (0 , 3)? –

ответ

261

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

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

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

string fullMonthName = new DateTime(2015, i, 1).ToString("MMMM", CultureInfo.CreateSpecificCulture("es")); 
+0

Как я могу использовать код выше, если я хочу «Август»? полное название месяца? – user2705620

+21

@ User6675636b20796f7521 'string monthName = new DateTime (2010, 8, 1) .ToString (" MMMM ", CultureInfo.InvariantCulture);' –

+0

Это: "string s = new DateTime (1958, month, 1) .ToString (" MMMM ", CultureInfo.InvariantCulture()); дает мне: «Неисключаемый член« System.Globalization.CultureInfo.InvariantCulture »не может использоваться как метод». –

212

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

DateTimeFormatInfo.GetAbbreviatedMonthName Method (Int32)

Возвращает культуры конкретных сокращенного названия указанного месяца на основе культуры, связанную с текущим объектом DateTimeFormatInfo .

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

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

DateTimeFormatInfo.GetMonthName Method (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

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

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

1

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

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

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

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

Благодарности.

Смежные вопросы