Obter o nome do mês a partir do número do mês

254

Possível duplicado:
Como obter o MonthName em c #?

Eu usei a seguinte sintaxe c # para obter o nome do mês a partir do mês não, mas Augusteu quero apenas Aug.

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

Alguma sugestão...

bala3569
fonte
3
Além de .GetMonthName (int) não retornar a string que você está procurando, ele não retornar uma string, então o .ToString () é desnecessária
Daved
1
Não seria mais fácil adicionar um .Substring (0,3)?
Federico Navarrete
Possível duplicata de Como obter o nome do mês em C #?
Cœur

Respostas:

349

Para nomes curtos de mês, use:

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

Para nomes de meses longos / completos para a cultura espanhola ("es")

string fullMonthName = new DateTime(2015, i, 1).ToString("MMMM", CultureInfo.CreateSpecificCulture("es"));
Darin Dimitrov
fonte
como eu usaria o código acima se eu quiser "agosto"? nome completo do mês?
Albert Laure
25
@ User6675636b20796f7521string monthName = new DateTime(2010, 8, 1) .ToString("MMMM", CultureInfo.InvariantCulture);
Robert Fricke
This: "string s = new DateTime (1958, mês, 1) .ToString (" MMMM ", CultureInfo.InvariantCulture ());" fornece: "O membro não invocável 'System.Globalization.CultureInfo.InvariantCulture' não pode ser usado como um método."
B. Clay Shannon
B. Clay Shannon add () around (new DateTime (1958, month, 1))
nuclear sweet
2
Esta resposta não é a melhor IMHO para trabalhar a partir de um número de mês em vez de um DateTime como na pergunta do OP. A resposta de Lasse V. Karlsen é mais direta para o nome curto do mês. E para obter o nome do mês na sua cultura local, use CultureInfo.CurrentCulture como nas respostas de CharithJ.
AFract
290

Para nomes abreviados do mês: "agosto"

Método DateTimeFormatInfo.GetAbbreviatedMonthName (Int32)

Retorna o nome abreviado específico da cultura do mês especificado com base na cultura associada ao objeto DateTimeFormatInfo atual.

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

Para nomes completos do mês: "agosto"

Método DateTimeFormatInfo.GetMonthName (Int32)

Retorna o nome completo específico da cultura do mês especificado com base na cultura associada ao objeto DateTimeFormatInfo atual.

string monthName = CultureInfo.CurrentCulture.DateTimeFormat.GetMonthName(8);
CharithJ
fonte
2
GetMonthName retorna o nome completo do mês. Se você precisar de JAN, FEV, etc., você pode usar var month = 10; string monthName = new DateTime (2014, mês, 1) .ToString ("MMM", CultureInfo.InvariantCulture) .ToUpper ();
Dmitry Pavlov
3
@DmitryPavlov GetAbbreviatedMonthName()é a melhor maneira de fazer isso.
NickG
2
DateTimeFormatInfo deve ser DateTimeFormat (pelo menos no .net 4.6)
TravisWhidden 4/16
Segunda opção funcionou para mim, embora eu usei GetCultureInfo("en-GB")em vez de CurrentCultureporque eu queria ter certeza de que o meu nome do mês estará sempre em Inglês
Maurice Klimek
Essa deve ser a melhor resposta. Salvou o meu dia. Obrigado.
Mahmoud Eidarous
85

Substitua GetMonthNamepor GetAbbreviatedMonthNamepara que ele leia:

string strMonthName = mfi.GetAbbreviatedMonthName(8);
Lasse V. Karlsen
fonte
12

Você quer GetAbbreviatedMonthName

AakashM
fonte
11

Você pode obter isso da seguinte maneira,

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

Agora, consiga os três primeiros caracteres

string shortMonthName = strMonthName.Substring(0, 3); //Aug
Thili77
fonte
9
System.Globalization.CultureInfo.CurrentCulture.DateTimeFormat.GetMonthName(4)

Este método retorna April

Se você precisar de um idioma especial, poderá adicionar:

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

Ou seu idioma preferido.

Por exemplo, com es-EScultura:

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

Devoluções: Abril

Retorna: Abril(em espanhol, porque, nós configuramos o culture as es-ESem nosso webconfigarquivo, caso contrário, você receberá April)

Isso deve funcionar.

MrMins
fonte
5

Isso deve retornar o texto do mês (janeiro a dezembro) do índice do mês (1-12)

int monthNumber = 1; //1-12  
string monthName = new DateTimeFormatInfo().GetMonthName(monthNumber);
Rishin C
fonte
1
Forneça algumas informações adicionais. Não basta postar código
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);

Resultado

maj
may
Joel Wiklund
fonte