2009-06-10 12 views
73

Wie findet man den Monatsnamen in C#? Ich möchte nicht eine riesige switch Aussage oder if Aussage über den Monat int schreiben. In VB.Net können Sie MonthName() verwenden, aber was ist mit C#?Wie erhalte ich den Monatsnamen in C#?

+0

Mögliches Duplikat [Beste Art und Weise eine ganze Zahl in einen Monat Namen in C# zu drehen?] (Http://stackoverflow.com/questions/218908/best-way-to-turn-an- Ganzzahl-in-einem-Monat-Name-in-c) – bluish

Antwort

143

können Sie die Culture verwenden den Monatsnamen zu erhalten. Sie können sogar den kurzen Monatsnamen sowie andere lustige Dinge bekommen.

Ich würde vorschlagen, dass Sie diese in Extension-Methoden, die Sie weniger Code später schreiben können. Sie können jedoch implementieren, wie Sie möchten.

Hier ist ein Beispiel dafür, wie es zu tun Erweiterung Methoden:

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

hoffe, das hilft!

+4

Kann ich hinzufügen, dass es eine InvariantInfo-Eigenschaft gibt, die ebenfalls verwendet werden kann. Und meiner Meinung nach ist das folgende ein einfacheres/lesbareres Format dafür: 'DateTimeFormatInfo.InvariantInfo.GetAbbreviatedMonthName (...)' oder 'DateTimeFormatInfo.CurrentInfo.GetAbbreviatedMonthName (...)' – bsara

104

Verwenden Sie den „MMMM“ Formatbezeichner:

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

vorausgesetzt, Sie haben ein Datum. falls nicht: 'var month = new DateTime (1, i, 1) .ToString (" MMMM ");' – Myster

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

Sie brauchen nicht der ToString(). –

+5

Oder String.Format, eigentlich. Just DateTime.Now.ToString ("MMMM") ist einfacher. –

+1

Ich hätte das auch vorgeschlagen, aber Sie hatten das schon als eine andere Antwort. Gortoks Methode demonstriert auch die Verwendung von Platzhaltern, um die Formatierung durchzuführen, also denke ich, dass es ein gutes alternatives Beispiel ist. –

5

Wenn Sie nur Monthname verwenden möchten, dann Microsoft.VisualBasic verweisen und es ist in Microsoft.VisualBasic.DateAndTime

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

Ihr Datum Nimmt man heute ist. Hoffe das hilft dir.

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

Dies beantwortet die Frage des OP nicht, weil sie sagten: "Ich möchte wirklich nicht ** eine große Switch-Anweisung schreiben [...]" (Betonung meiner). Bitte lesen Sie die Fragen im Detail, bevor Sie eine Antwort schreiben. – honk

Verwandte Themen