2009-11-05 8 views

Antwort

31

Sie müssen vorsichtig über Lokalisierungsprobleme auch: Sie verwenden können:

string[] monthNames = 
    System.Globalization.CultureInfo.CurrentCulture 
     .DateTimeFormat.MonthGenitiveNames; 

Der Genitiv ist in einigen gebeugten Sprachen, die von einem Genitiv eingeführt Substantiv-Flexion, die in nicht-flektierten Sprachen mit dem Äquivalent der englischen Präposition "of" übereinstimmt. Zum Beispiel besteht ein Datum in der russischen (Russland), "ru-RU" -Kultur aus der Tag-Nummer und dem Genitiv-Monatsnamen.

More info…

EDIT: Wenn Sie Englisch Monatsnamen müssen Sie Ihre aktuelle Kultur als en-US

Thread.CurrentThread.CurrentCulture = new CultureInfo("en-US"); 
+0

Wie kann ich nur englische Monate bekommen? – LIX

+0

Guter Punkt !!! +1 –

+0

Sie müssen Ihre aktuelle Kultur als en-US setzen Thread.CurrentThread.CurrentCulture = new CultureInfo ("en-US"); und dann verwenden Sie tring [] monthNames = System.Globalization.CultureInfo.CurrentCulture.DateTimeFormat.MonthGenitiveNames; Dies wird sicherstellen, dass der Code ist Lokalisierung bereit – Ngm

8
string[] months = new string[] {"January", "February", "March", "April", "May", 
    "June", "July", "August", "September", "October", "November", "December"}; 
+1

Ja, was ist los mit dem Schreiben, was Sie meinen? Kudos für die Erinnerung, wie man küssen. –

+0

und Sie brauchen nicht einmal 'new string [ ] {',' new [] {'wird tun. – Yogesh

14
string[] monthNames = System.Globalization.CultureInfo.CurrentCulture.DateTimeFormat.MonthNames; 

foreach (string m in monthNames) // writing out 
{ 
    Console.WriteLine(m); 
} 

Ausgang:

January 
February 
March 
April 
May 
June 
July 
August 
September 
October 
November 
December 

Update:
Sie beachten, dass für die verschiedenen locales/Kulturen, vielleicht nicht die Ausgabe in englischer Sprache. Habe das vorher noch nicht getestet. nur

Für US-Englisch:

string[] monthNames = (new System.Globalization.CultureInfo("en-US")).DateTimeFormat.MonthNames; 
+0

Hallo Sie müssen vorsichtig sein über die Verwendung von MonthNames in einigen Sprachen wie Russisch, schauen Sie sich meine Post unter – Ngm

+0

Ngms 'MonthGenitiveNames' Methode könnte besser geeignet sein, abhängig vom Kontext. –

+0

OK, ich habe "' en-US' cultureinfo "hinzugefügt. Monat Namen –

6

Eine alternative, die hoffentlich lehrt einstellen, wie Sie die Range-Funktion für sequentielle erstellen anwenden können Dinge.

var startDate = new DateTime(2014,1,1); 
var months = Enumerable.Range(0,11) 
         .Select(startDate.AddMonths); 
         .Select(m => m.ToString("yyyy MMMM")) 
         .ToList(); 

Was es tut, ist ein Datetime-Objekt (startdate) Erstellen und Verwenden dieses Objekt alle anderen Tage, relativ zu sich selbst zu erzeugen.

  1. Enumerable.Range (0,11) erstellt eine Liste von ganzen Zahlen {0,1,2,3,4,5,6,7,8,9,10,11}

  2. Wählen Sie (startDate.AddMonths) aus, um jede dieser ganzen Zahlen an die AddMonths-Funktion von startDate zu senden, die eine Liste der Daten von Januar bis Dezember erstellt.

  3. Select (m => m.ToString ("yyyy MMMM") nimmt jeweils die Termine von Januar bis Dezember und wandelt sie in eine formatierte Zeichenfolge (in diesem Fall "Januar 2014")

  4. ToList() wertet alle Funktionen und gibt sie als Liste von Strings.

+0

nicht der beste Weg Monat Namen zu bekommen, aber auf jeden Fall als alternative Lösung. +1 für die gute Mühe und Erklärung. – Kagawa

Verwandte Themen