2009-11-05 9 views
8

Voglio ottenere la matrice del mese in C#.
qualcosa del genere: { January , February , ... , December }
Come posso fare questo? per favore mandami codici in C#. grazieCome ottenere una serie di mesi in C#

risposta

31

È necessario attenti a problemi di localizzazione così: È possibile utilizzare:

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

Il caso genitivo è introdotto in alcune lingue flesse da un genitivo flessione del nome, che in lingue non flesse corrisponde all'utilizzo dell'equivalente della preposizione inglese "di". Ad esempio, una data in russo (Russia), "ru-RU", cultura, è composta dal numero del giorno e dal nome del mese genitivo.

More info…

EDIT: Se avete bisogno di nomi in inglese mese si può impostare la vostra cultura corrente come en-US

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

come posso ottenere solo mesi di inglese? – LIX

+0

Buon punto !!! +1 –

+0

È necessario impostare la cultura corrente come en-US Thread.CurrentThread.CurrentCulture = new CultureInfo ("en-US"); e quindi utilizzare tring [] monthNames = System.Globalization.CultureInfo.CurrentCulture.DateTimeFormat.MonthGenitiveNames; Ciò garantisce che il codice sia pronto per la localizzazione – Ngm

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

Già, cosa c'è di sbagliato con la scrittura di quello che vuoi dire? Complimenti per ricordare come baciare. –

+0

e non hanno nemmeno bisogno 'nuova stringa [ ] {',' new [] {'farà. – Yogesh

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

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

uscita:

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

Aggiornamento:
notano che per i diversi locali/culture, l'uscita potrebbe non essere in inglese. Non l'ho provato prima però.

Solo inglese americano:

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

Ciao Devi stare attento all'uso di MonthNames in alcune lingue come il russo, guarda il mio post sotto – Ngm

+0

Il metodo 'MonthGenitiveNames' di Ngm potrebbe essere più adatto a seconda del contesto. –

+0

OK, ho aggiunto "en-US' cultureinfo" Nomi dei mesi –

6

Un supplente che ti insegna si spera come è possibile applicare la funzione gamma di creare per sequenziale cose.

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

Quello che sta facendo è la creazione di un oggetto DateTime (startDate) e l'utilizzo di tale oggetto per generare tutte le altre date relative a se stesso.

  1. Enumerable.Range (0,11) crea una lista di interi {} 0,1,2,3,4,5,6,7,8,9,10,11

  2. Select (startDate.AddMonths) alimenta ciascuno di questi numeri interi alla funzione AddMonths di startDate che produce un elenco di date da gennaio a dicembre.

  3. Select (m => m.ToString ("aaaa MMMM") batte ciascuna delle date da gennaio a dicembre e li converte in una stringa formattata (in questo caso "2014 di gennaio")

  4. ToList() valuta tutte le funzioni e lo restituisce come una lista di stringhe.

+0

non è il modo migliore per ottenere i nomi dei mesi, ma sicuramente ottimo come soluzione alternativa. +1 per il buon sforzo e la spiegazione. – Kagawa

Problemi correlati