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

bala3569
quelle
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
Mögliches Duplikat von Wie erhalte ich den Monatsnamen in C #?
Cœur

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"));
Darin Dimitrov
quelle
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);
CharithJ
quelle
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
85

Ersetzen Sie GetMonthNamedurch, GetAbbreviatedMonthNameso dass es lautet:

string strMonthName = mfi.GetAbbreviatedMonthName(8);
Lasse V. Karlsen
quelle
12

Sie wollen GetAbbreviatedMonthName

AakashM
quelle
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
Thili77
quelle
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.

MrMins
quelle
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);
Rishin C.
quelle
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
Joel Wiklund
quelle