Il modo migliore per trasformare un numero intero in un nome di mese in c #?


123

C'è un modo migliore per trasformare un numero intero nel nome del mese in .net?

Ovviamente posso far girare un datetime per metterlo in stringa e analizzare il nome del mese da lì. Sembra solo una gigantesca perdita di tempo.

Risposte:



20

Perché non basta usare somedatetime.ToString("MMMM")?


1
Quindi ogni volta che devo trasformare il 1 ° in gennaio, ho bisogno di rinnovare una data con un anno e un giorno arbitrari, per ottenere solo gennaio?
DevelopingChris,

1
È corretto, come bonus, puoi averlo in qualsiasi lingua localizzabile che desideri :)
leppie

20

Aggiornato con lo spazio dei nomi e l'oggetto corretti:

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

//Correct but keep in mind CurrentInfo could be null
DateTimeFormatInfo.CurrentInfo.MonthNames[index];

1
Questo non funziona. Nick Berardi ha fornito la risposta corretta.
corvo

1
da ora proverò a compilare prima le mie risposte
Ovidiu Pacurar

Rendendomi conto che questa è una vecchia domanda, voglio comunque sottolineare che la risposta accettata fornita da Nick Berandi è più corretta (almeno per l'implementazione di Microsoft - non sono sicuro di Mono), perché la proprietà MonthNames clona sempre l'array dei nomi dei mesi, rendendo il tutto un po 'meno efficiente.
AASoft

7

Puoi utilizzare un metodo statico dallo Microsoft.VisualBasicspazio dei nomi:

string monthName = Microsoft.VisualBasic.DateAndTime.MonthName(monthInt, false);

6
DateTime dt = new DateTime(year, month, day);
Response.Write(day + "-" + dt.ToString("MMMM") + "-" + year);

In questo modo, il tuo mese verrà visualizzato per nome, non per numero intero.


2

Per ottenere il valore del mese abbreviato, puoi usare Enum.Parse();

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

Questo produrrà "Jan" come risultato.

Ricorda che questo è un indice a base zero.

Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.