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.