Comment trouver le nom du mois en C #? Je ne veux pas écrire une switchdéclaration ou une déclaration énorme ifsur le mois int. Dans VB.Net, vous pouvez utiliser MonthName(), mais qu'en est-il de C #?
Vous pouvez utiliser CultureInfo pour obtenir le nom du mois. Vous pouvez même obtenir le nom court du mois ainsi que d'autres choses amusantes.
Je vous suggère de les mettre dans des méthodes d'extension, ce qui vous permettra d'écrire moins de code plus tard. Cependant, vous pouvez mettre en œuvre comme vous le souhaitez.
Voici un exemple de la façon de le faire à l'aide de méthodes d'extension:
using System;
using System.Globalization;classProgram{staticvoidMain(){Console.WriteLine(DateTime.Now.ToMonthName());Console.WriteLine(DateTime.Now.ToShortMonthName());Console.Read();}}staticclassDateTimeExtensions{publicstaticstringToMonthName(thisDateTime dateTime){returnCultureInfo.CurrentCulture.DateTimeFormat.GetMonthName(dateTime.Month);}publicstaticstringToShortMonthName(thisDateTime dateTime){returnCultureInfo.CurrentCulture.DateTimeFormat.GetAbbreviatedMonthName(dateTime.Month);}}
Puis-je ajouter qu'il existe une InvariantInfopropriété qui peut également être utilisée. Et, à mon avis, ce qui suit est un format plus simple / lisible pour faire cela: DateTimeFormatInfo.InvariantInfo.GetAbbreviatedMonthName(...)ouDateTimeFormatInfo.CurrentInfo.GetAbbreviatedMonthName(...)
Ou String.Format, en fait. Just DateTime.Now.ToString ("MMMM") est plus simple.
Jon Skeet
1
J'aurais suggéré cela aussi, mais vous aviez déjà cela comme une autre réponse. La méthode de Gortok démontre également l'utilisation d'espaces réservés pour faire le formatage, donc je pense que c'est un bon exemple alternatif.
Richard Anthony Hein
7
Si vous souhaitez simplement utiliser MonthName, faites référence à Microsoft.VisualBasic et c'est dans Microsoft.VisualBasic.DateAndTime
//eg. Get JanuaryString monthName =Microsoft.VisualBasic.DateAndTime.MonthName(1);
privatestringMonthName(int m){string res;switch(m){case1:
res="Ene";break;case2:
res ="Feb";break;case3:
res ="Mar";break;case4:
res ="Abr";break;case5:
res ="May";break;case6:
res ="Jun";break;case7:
res ="Jul";break;case8:
res ="Ago";break;case9:
res ="Sep";break;case10:
res ="Oct";break;case11:
res ="Nov";break;case12:
res ="Dic";break;default:
res ="Nulo";break;}return res;}
Cela ne répond pas à la question de l'OP, car ils ont dit: "Je ne veux vraiment pas écrire une énorme instruction de commutation [...]" (c'est moi qui souligne). Veuillez lire les questions en détail avant d'écrire une réponse.
Réponses:
Vous pouvez utiliser CultureInfo pour obtenir le nom du mois. Vous pouvez même obtenir le nom court du mois ainsi que d'autres choses amusantes.
Je vous suggère de les mettre dans des méthodes d'extension, ce qui vous permettra d'écrire moins de code plus tard. Cependant, vous pouvez mettre en œuvre comme vous le souhaitez.
Voici un exemple de la façon de le faire à l'aide de méthodes d'extension:
J'espère que cela t'aides!
la source
InvariantInfo
propriété qui peut également être utilisée. Et, à mon avis, ce qui suit est un format plus simple / lisible pour faire cela:DateTimeFormatInfo.InvariantInfo.GetAbbreviatedMonthName(...)
ouDateTimeFormatInfo.CurrentInfo.GetAbbreviatedMonthName(...)
Utilisez le spécificateur de format "MMMM":
la source
var month = new DateTime(1,i,1).ToString("MMMM");
la source
Si vous souhaitez simplement utiliser MonthName, faites référence à Microsoft.VisualBasic et c'est dans Microsoft.VisualBasic.DateAndTime
la source
Supposons que votre date soit aujourd'hui. J'espère que cela vous aide.
la source
la source