Melhor maneira de transformar um número inteiro em um nome de mês em c #?

123

Existe uma maneira melhor de transformar um número inteiro no nome do mês em .net?

Obviamente, posso girar um datetime para encadear e analisar o nome do mês a partir daí. Isso parece uma gigantesca perda de tempo.

DevelopingChris
fonte

Respostas:

20

Por que não usar apenas somedatetime.ToString("MMMM")?

leppie
fonte
1
Então, sempre que precisar transformar 1 em janeiro, preciso atualizar uma data com um dia e um ano arbitrários, para obter apenas janeiro?
DevelopingChris
1
Isso está correto, como um bônus, você pode tê-lo em qualquer idioma localizável você quer :)
leppie
20

Atualizado com o espaço para nome e o objeto corretos:

//This was wrong
//CultureInfo.DateTimeFormat.MonthNames[index];

//Correct but keep in mind CurrentInfo could be null
DateTimeFormatInfo.CurrentInfo.MonthNames[index];
Ovidiu Pacurar
fonte
1
Isso não funciona. Nick Berardi forneceu a resposta correta.
raven
1
a partir de agora vou tentar compilar as minhas respostas primeira
Ovidiu Pacurar
Percebendo que essa é uma pergunta antiga, ainda quero salientar que a resposta aceita fornecida por Nick Berandi é mais correta (pelo menos para a implementação da Microsoft - não tenho certeza sobre o Mono), porque a propriedade MonthNames sempre clona a matriz de nomes de meses, tornando a coisa toda um pouco menos eficiente.
AASoft
7

Você pode usar um método estático no Microsoft.VisualBasicespaço para nome:

string monthName = Microsoft.VisualBasic.DateAndTime.MonthName(monthInt, false);
Tokabi
fonte
6
DateTime dt = new DateTime(year, month, day);
Response.Write(day + "-" + dt.ToString("MMMM") + "-" + year);

Dessa forma, seu mês será exibido pelo nome, não pelo número inteiro.

user1534576
fonte
2

Para obter um valor abreviado do mês, você pode usar Enum.Parse();

Enum.Parse(typeof(Month), "0");

Isso produzirá "Jan" como resultado.

Lembre-se de que este é um índice baseado em zero.

sth
fonte