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


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

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

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



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

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.


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

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
En utilisant notre site, vous reconnaissez avoir lu et compris notre politique liée aux cookies et notre politique de confidentialité.
Licensed under cc by-sa 3.0 with attribution required.