Holen Sie sich den Monatsnamen von der Monatsnummer


254

Mögliches Duplikat:
Wie erhalte ich den Monatsnamen in c #?

Ich habe die folgende c # -Syntax verwendet, um den Monatsnamen von Monat Nr. Zu erhalten, aber ich bekomme nur Augustich will Aug..

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

Irgendein Vorschlag...


3
Abgesehen davon, dass .GetMonthName (int) die gesuchte Zeichenfolge nicht zurückgibt , wird eine Zeichenfolge zurückgegeben, sodass .ToString () nicht
erforderlich

1
Wäre es nicht einfacher, nur eine .Substring (0,3) hinzuzufügen?
Federico Navarrete

Antworten:


349

Verwenden Sie für kurze Monatsnamen:

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

Für lange / volle Monatsnamen für die spanische ("es") Kultur

string fullMonthName = new DateTime(2015, i, 1).ToString("MMMM", CultureInfo.CreateSpecificCulture("es"));

Wie würde ich den obigen Code verwenden, wenn ich "August" möchte? vollständiger Monatsname?
Albert Laure

25
@ User6675636b20796f7521string monthName = new DateTime(2010, 8, 1) .ToString("MMMM", CultureInfo.InvariantCulture);
Robert Fricke

Dies: "string s = new DateTime (1958, Monat, 1) .ToString (" MMMM ", CultureInfo.InvariantCulture ());" gibt mir, "Nicht aufrufbares Mitglied 'System.Globalization.CultureInfo.InvariantCulture' kann nicht wie eine Methode verwendet werden."
B. Clay Shannon

B. Clay Shannon add () um (neue DateTime (1958, Monat, 1))
nuklear süß

2
Diese Antwort ist meiner Meinung nach nicht die beste, um mit einer Monatszahl anstelle einer DateTime wie in der OP-Frage zu arbeiten. Die Antwort von Lasse V. Karlsen ist für kurze Monatsnamen einfacher. Und um den Monatsnamen in Ihrer lokalen Kultur zu erhalten, verwenden Sie CultureInfo.CurrentCulture wie in den Antworten von CharithJ.
Nach

290

Für abgekürzte Monatsnamen: "Aug"

DateTimeFormatInfo.GetAbbreviatedMonthName-Methode (Int32)

Gibt den kulturspezifischen abgekürzten Namen des angegebenen Monats zurück, basierend auf der Kultur, die dem aktuellen DateTimeFormatInfo-Objekt zugeordnet ist.

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

Für vollständige Monatsnamen: "August"

DateTimeFormatInfo.GetMonthName-Methode (Int32)

Gibt den kulturspezifischen vollständigen Namen des angegebenen Monats basierend auf der Kultur zurück, die dem aktuellen DateTimeFormatInfo-Objekt zugeordnet ist.

string monthName = CultureInfo.CurrentCulture.DateTimeFormat.GetMonthName(8);

2
GetMonthName gibt den vollständigen Monatsnamen zurück. Wenn Sie es als JAN, FEB usw. benötigen, können Sie var month = 10 verwenden. Zeichenfolge monthName = new DateTime (2014, month, 1) .ToString ("MMM", CultureInfo.InvariantCulture) .ToUpper ();
Dmitry Pavlov

3
@DmitryPavlov GetAbbreviatedMonthName()ist ein besserer Weg, dies zu tun.
NickG

2
DateTimeFormatInfo sollte DateTimeFormat sein (zumindest in .net 4.6)
TravisWhidden

Die zweite Option funktionierte für mich, obwohl ich GetCultureInfo("en-GB")stattdessen verwendet habe, CurrentCultureweil ich sicher sein wollte, dass mein Monatsname immer auf Englisch sein wird
Maurice Klimek

Dies sollte die beste Antwort sein. Hat meinen Tag gerettet. Vielen Dank.
Mahmoud Eidarous



11

Sie können dies auf folgende Weise erhalten:

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

Holen Sie sich jetzt die ersten drei Zeichen

string shortMonthName = strMonthName.Substring(0, 3); //Aug

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

Diese Methode gibt zurück April

Wenn Sie eine spezielle Sprache benötigen, können Sie Folgendes hinzufügen:

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

Oder deine bevorzugte Sprache.

Zum Beispiel mit es-ESKultur:

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

Kehrt zurück: Abril

Rückgabe: Abril(auf Spanisch, weil wir das culture as es-ESin unserer webconfigDatei konfiguriert haben , sonst erhalten Sie April)

Das sollte funktionieren.


5

Dies sollte den Monatstext (Januar - Dezember) aus dem Monatsindex (1-12) zurückgeben.

int monthNumber = 1; //1-12  
string monthName = new DateTimeFormatInfo().GetMonthName(monthNumber);

1
Bitte geben Sie einige zusätzliche Informationen an. Nicht nur Postleitzahl
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);

Ausgabe

maj
may
Durch die Nutzung unserer Website bestätigen Sie, dass Sie unsere Cookie-Richtlinie und Datenschutzrichtlinie gelesen und verstanden haben.
Licensed under cc by-sa 3.0 with attribution required.