Como encontrar o nome do mês em C #? Não quero escrever uma grande switchdeclaração ou ifdeclaração sobre o mês int. Em VB.Net você pode usar MonthName(), mas e o C #?
Você pode usar o CultureInfo para obter o nome do mês. Você pode até obter o nome do mês curto, bem como outras coisas divertidas.
Eu sugiro que você os coloque em métodos de extensão, o que permitirá que você escreva menos código posteriormente. No entanto, você pode implementar como quiser.
Aqui está um exemplo de como fazer isso usando métodos de extensão:
using System;
using System.Globalization;classProgram{staticvoidMain(){Console.WriteLine(DateTime.Now.ToMonthName());Console.WriteLine(DateTime.Now.ToShortMonthName());Console.Read();}}staticclassDateTimeExtensions{publicstaticstringToMonthName(thisDateTime dateTime){returnCultureInfo.CurrentCulture.DateTimeFormat.GetMonthName(dateTime.Month);}publicstaticstringToShortMonthName(thisDateTime dateTime){returnCultureInfo.CurrentCulture.DateTimeFormat.GetAbbreviatedMonthName(dateTime.Month);}}
Devo acrescentar que existe uma InvariantInfopropriedade que também pode ser usada. E, na minha opinião, o seguinte é um formato mais simples / legível para fazer isso: DateTimeFormatInfo.InvariantInfo.GetAbbreviatedMonthName(...)orDateTimeFormatInfo.CurrentInfo.GetAbbreviatedMonthName(...)
Ou String.Format, na verdade. Apenas DateTime.Now.ToString ("MMMM") é mais simples.
Jon Skeet de
1
Eu teria sugerido isso também, mas você já tinha essa como outra resposta. O método de Gortok também demonstra o uso de marcadores para fazer a formatação, então acho que é um bom exemplo alternativo.
Richard Anthony Hein
7
Se você deseja apenas usar MonthName, faça referência a Microsoft.VisualBasic e ele está em Microsoft.VisualBasic.DateAndTime
//eg. Get JanuaryString monthName =Microsoft.VisualBasic.DateAndTime.MonthName(1);
privatestringMonthName(int m){string res;switch(m){case1:
res="Ene";break;case2:
res ="Feb";break;case3:
res ="Mar";break;case4:
res ="Abr";break;case5:
res ="May";break;case6:
res ="Jun";break;case7:
res ="Jul";break;case8:
res ="Ago";break;case9:
res ="Sep";break;case10:
res ="Oct";break;case11:
res ="Nov";break;case12:
res ="Dic";break;default:
res ="Nulo";break;}return res;}
Isso não responde à pergunta do OP, porque eles disseram: "Eu realmente não quero escrever uma declaração de switch enorme [...]" (grifo meu). Leia as perguntas em detalhes antes de escrever uma resposta.
Respostas:
Você pode usar o CultureInfo para obter o nome do mês. Você pode até obter o nome do mês curto, bem como outras coisas divertidas.
Eu sugiro que você os coloque em métodos de extensão, o que permitirá que você escreva menos código posteriormente. No entanto, você pode implementar como quiser.
Aqui está um exemplo de como fazer isso usando métodos de extensão:
Espero que isto ajude!
fonte
InvariantInfo
propriedade que também pode ser usada. E, na minha opinião, o seguinte é um formato mais simples / legível para fazer isso:DateTimeFormatInfo.InvariantInfo.GetAbbreviatedMonthName(...)
orDateTimeFormatInfo.CurrentInfo.GetAbbreviatedMonthName(...)
Use o especificador de formato "MMMM":
fonte
var month = new DateTime(1,i,1).ToString("MMMM");
fonte
Se você deseja apenas usar MonthName, faça referência a Microsoft.VisualBasic e ele está em Microsoft.VisualBasic.DateAndTime
fonte
Supondo que seu encontro seja hoje. Espero que isso ajude você.
fonte
fonte