Obtenir le nom du mois à partir du numéro du mois

254

Duplicata possible:
Comment obtenir le MonthName en c #?

J'ai utilisé la syntaxe c # suivante pour obtenir le nom du mois à partir du mois non mais je reçois Augustje veux seulement Aug..

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

Toute suggestion...

bala3569
la source
3
Mis à part .GetMonthName (int) ne retourne pas la chaîne que vous cherchez, il ne renvoie une chaîne, de sorte que le .ToString () est inutile
Daved
1
Ne serait-il pas plus simple d'ajouter un .Substring (0,3)?
Federico Navarrete

Réponses:

349

Pour les noms de mois courts, utilisez:

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

Pour les noms de mois longs / complets pour la culture espagnole ("es")

string fullMonthName = new DateTime(2015, i, 1).ToString("MMMM", CultureInfo.CreateSpecificCulture("es"));
Darin Dimitrov
la source
comment utiliser le code ci-dessus si je veux "août"? nom du mois complet?
Albert Laure
25
@ User6675636b20796f7521string monthName = new DateTime(2010, 8, 1) .ToString("MMMM", CultureInfo.InvariantCulture);
Robert Fricke
Ceci: "string s = new DateTime (1958, month, 1) .ToString (" MMMM ", CultureInfo.InvariantCulture ());" me donne, "Le membre non invocable 'System.Globalization.CultureInfo.InvariantCulture' ne peut pas être utilisé comme une méthode."
B. Clay Shannon
Clay Shannon ajoute () autour de (nouveau DateTime (1958, mois, 1))
Nuclear Sweet
2
Cette réponse n'est pas la meilleure IMHO pour travailler à partir d'un numéro de mois au lieu d'un DateTime comme dans la question OP. La réponse de Lasse V. Karlsen est plus simple pour un nom de mois court. Et pour obtenir le nom du mois dans votre culture locale, utilisez CultureInfo.CurrentCulture comme dans les réponses de CharithJ.
AFract
290

Pour les noms de mois abrégés: "août"

DateTimeFormatInfo.GetAbbreviatedMonthName, méthode (Int32)

Renvoie le nom abrégé spécifique à la culture du mois spécifié en fonction de la culture associée à l'objet DateTimeFormatInfo actuel.

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

Pour les noms de mois complets: "août"

DateTimeFormatInfo.GetMonthName, méthode (Int32)

Renvoie le nom complet propre à la culture du mois spécifié en fonction de la culture associée à l'objet DateTimeFormatInfo actuel.

string monthName = CultureInfo.CurrentCulture.DateTimeFormat.GetMonthName(8);
CharithJ
la source
2
GetMonthName renvoie le nom complet du mois. Si vous en avez besoin en JAN, FEB, etc., vous pouvez utiliser var month = 10; chaîne monthName = new DateTime (2014, mois, 1) .ToString ("MMM", CultureInfo.InvariantCulture) .ToUpper ();
Dmitry Pavlov
3
@DmitryPavlov GetAbbreviatedMonthName()est une meilleure façon de le faire.
NickG
2
DateTimeFormatInfo devrait être DateTimeFormat (au moins dans .net 4.6)
TravisWhidden
La deuxième option a fonctionné pour moi, bien que j'aie utilisé GetCultureInfo("en-GB")au lieu de CurrentCultureparce que je voulais être sûr, que mon nom de mois sera toujours en anglais
Maurice Klimek
Ce devrait être la meilleure réponse. J'ai sauvé ma journée. Merci.
Mahmoud Eidarous
12

Tu veux GetAbbreviatedMonthName

AakashM
la source
11

Vous pouvez l'obtenir de la manière suivante,

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

Maintenant, obtenez les trois premiers caractères

string shortMonthName = strMonthName.Substring(0, 3); //Aug
Thili77
la source
9
System.Globalization.CultureInfo.CurrentCulture.DateTimeFormat.GetMonthName(4)

Cette méthode retourne April

Si vous avez besoin d'une langue spéciale, vous pouvez ajouter:

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

Ou votre langue préférée.

Par exemple, avec la es-ESculture:

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

Retour: Abril

Renvoie: Abril(en espagnol, car, nous avons configuré le culture as es-ESdans notre webconfigfichier, sinon, vous obtiendrez April)

Cela devrait fonctionner.

MrMins
la source
5

Cela devrait renvoyer le texte du mois (janvier - décembre) à partir de l'index du mois (1-12)

int monthNumber = 1; //1-12  
string monthName = new DateTimeFormatInfo().GetMonthName(monthNumber);
Rishin C
la source
1
Veuillez fournir quelques informations supplémentaires. Ne vous contentez pas de poster le code
ochs.tobi
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);

Production

maj
may
Joel Wiklund
la source