2009-06-10 23 views
73

Comment va-t-on trouver le nom du mois en C#? Je ne veux pas écrire un énorme switch déclaration ou if déclaration sur le mois int. Dans VB.Net, vous pouvez utiliser MonthName(), mais qu'en est-il de C#?Comment obtenir le nom du mois en C#?

+0

double possible de [La meilleure façon de transformer un entier en un nom de mois en C#?] (Http://stackoverflow.com/questions/218908/best-way-to-turn-an- entier-en-un-mois-nom-en-c) – bluish

Répondre

143

Vous pouvez utiliser le CultureInfo pour obtenir le nom du mois. Vous pouvez même obtenir le nom du mois court 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 en utilisant des méthodes d'extension:

using System; 
using System.Globalization; 

class Program 
{ 
    static void Main() 
    { 

     Console.WriteLine(DateTime.Now.ToMonthName()); 
     Console.WriteLine(DateTime.Now.ToShortMonthName()); 
     Console.Read(); 
    } 
} 

static class DateTimeExtensions 
{ 
    public static string ToMonthName(this DateTime dateTime) 
    { 
     return CultureInfo.CurrentCulture.DateTimeFormat.GetMonthName(dateTime.Month); 
    } 

    public static string ToShortMonthName(this DateTime dateTime) 
    { 
     return CultureInfo.CurrentCulture.DateTimeFormat.GetAbbreviatedMonthName(dateTime.Month); 
    } 
} 

Hope this helps!

+4

Puis-je ajouter qu'il existe une propriété 'InvariantInfo' qui peut également être utilisée. Et, à mon avis, ce qui suit est un format plus simple/lisible pour ce faire: 'DateTimeFormatInfo.InvariantInfo.GetAbbreviatedMonthName (...)' ou 'DateTimeFormatInfo.CurrentInfo.GetAbbreviatedMonthName (...)' – bsara

104

Utilisez le spécificateur de format "MMMM":

string month = dateTime.ToString("MMMM"); 
+16

en supposant que vous avez une date. sinon: 'var mois = new DateTime (1, i, 1) .ToString (" MMMM ");' – Myster

9
string CurrentMonth = String.Format("{0:MMMM}", DateTime.Now) 
+0

Vous n'avez pas besoin le ToString(). –

+5

Ou String.Format, en fait. Juste DateTime.Now.ToString ("MMMM") est plus simple. –

+1

J'aurais suggéré cela aussi, mais vous avez déjà eu 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. –

5

Si vous voulez juste utiliser MonthName référence alors Microsoft.VisualBasic et il est en Microsoft.VisualBasic.DateAndTime

//eg. Get January 
String monthName = Microsoft.VisualBasic.DateAndTime.MonthName(1); 
4

Supposant votre date est aujourd'hui. J'espère que cela vous aide.

DateTime dt = DateTime.Today; 

string thisMonth= dt.ToString("MMMM"); 

Console.WriteLine(thisMonth); 
-7
private string MonthName(int m) 
    { 
     string res; 
     switch (m) 
     { 
      case 1: 
       res="Ene"; 
       break; 
      case 2: 
       res = "Feb"; 
       break; 
      case 3: 
       res = "Mar"; 
       break; 
      case 4: 
       res = "Abr"; 
       break; 
      case 5: 
       res = "May"; 
       break; 
      case 6: 
       res = "Jun"; 
       break; 
      case 7: 
       res = "Jul"; 
       break; 
      case 8: 
       res = "Ago"; 
       break; 
      case 9: 
       res = "Sep"; 
       break; 
      case 10: 
       res = "Oct"; 
       break; 
      case 11: 
       res = "Nov"; 
       break; 
      case 12: 
       res = "Dic"; 
       break; 
      default: 
       res = "Nulo"; 
       break; 
     } 
     return res; 
    } 
+8

Cela ne répond pas à la question de l'OP, car ils ont dit: "Je ne veux vraiment pas ** écrire ** un énorme changement de déclaration [...]" (c'est moi qui souligne). Veuillez lire les questions en détail avant d'écrire une réponse. – honk

Questions connexes