Ottieni il nome del mese dal numero del mese


254

Possibile duplicato:
come ottenere il MonthName in c #?

Ho usato la seguente sintassi c # per ottenere il nome del mese dal mese no, ma capisco che Augustvoglio solo Aug..

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

Qualche suggerimento...


3
A parte .GetMonthName (int) non restituendo la stringa che stai cercando, si fa restituire una stringa, in modo che il .ToString () non è necessaria
Daved

1
Non sarebbe più semplice aggiungere un .Substring (0,3)?
Federico Navarrete,

Risposte:


349

Per i nomi dei mesi brevi usare:

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

Per i nomi di mese lungo / intero per la cultura spagnola ("es")

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

come dovrei usare il codice sopra se desidero "August"? nome completo del mese?
Albert Laure,

25
@ User6675636b20796f7521string monthName = new DateTime(2010, 8, 1) .ToString("MMMM", CultureInfo.InvariantCulture);
Robert Fricke,

Questo: "string s = new DateTime (1958, month, 1) .ToString (" MMMM ", CultureInfo.InvariantCulture ());" mi dà, "Il membro non invocabile 'System.Globalization.CultureInfo.InvariantCulture' non può essere usato come un metodo."
B. Clay Shannon,

B. Clay Shannon add () around (nuovo DateTime (1958, mese, 1))
nucleare dolce

2
Questa risposta non è la migliore IMHO per lavorare da un numero di mese invece di un DateTime come nella domanda OP. La risposta di Lasse V. Karlsen è più semplice per il nome breve del mese. E per ottenere il nome del mese nella tua cultura locale, usa CultureInfo.CurrentCulture come nelle risposte di CharithJ.
AFract,

290

Per i nomi dei mesi abbreviati: "Ago"

Metodo DateTimeFormatInfo.GetAbbreviatedMonthName (Int32)

Restituisce il nome abbreviato specifico della cultura del mese specificato in base alla cultura associata all'oggetto DateTimeFormatInfo corrente.

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

Per i nomi dei mesi interi: "agosto"

Metodo DateTimeFormatInfo.GetMonthName (Int32)

Restituisce il nome completo specifico della cultura del mese specificato in base alla cultura associata all'oggetto DateTimeFormatInfo corrente.

string monthName = CultureInfo.CurrentCulture.DateTimeFormat.GetMonthName(8);

2
GetMonthName restituisce il nome completo del mese. Se ne hai bisogno come JAN, FEB, ecc. Puoi usare var month = 10; string monthName = new DateTime (2014, mese, 1) .ToString ("MMM", CultureInfo.InvariantCulture) .ToUpper ();
Dmitry Pavlov,

3
@DmitryPavlov GetAbbreviatedMonthName()è un modo migliore per farlo.
NickG

2
DateTimeFormatInfo dovrebbe essere DateTimeFormat (almeno in .net 4.6)
TravisWhidden

La seconda opzione ha funzionato per me, anche se ho usato GetCultureInfo("en-GB")invece CurrentCultureperché volevo essere sicuro, che il mio nome del mese sarà sempre in inglese
Maurice Klimek,

Questa dovrebbe essere la risposta migliore. Mi ha salvato la giornata. Grazie.
Mahmoud Eidarous



11

Puoi ottenerlo nel modo seguente,

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

Ora, ottieni i primi tre personaggi

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

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

Questo metodo restituisce April

Se hai bisogno di una lingua speciale, puoi aggiungere:

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

O la tua lingua preferita.

Ad esempio, con la es-EScultura:

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

Ritorna: Abril

Restituisce: Abril(in spagnolo, perché, abbiamo configurato culture as es-ESnel nostro webconfigfile, altrimenti, otterraiApril )

Dovrebbe funzionare.


5

Questo dovrebbe restituire il testo del mese (gennaio - dicembre) dall'indice del mese (1-12)

int monthNumber = 1; //1-12  
string monthName = new DateTimeFormatInfo().GetMonthName(monthNumber);

1
Si prega di fornire alcune informazioni aggiuntive. Non
limitarti

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

Produzione

maj
may
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.