2009-11-05 27 views

Respuesta

31

Necesitas cuidado con los problemas de localización, así: Se puede utilizar:

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

El caso genitivo se introduce en algunos idiomas flexionado mediante un genitivo inflexión del nombre, que en los idiomas no flexionados coincide con el uso del equivalente de la preposición inglesa "de". Por ejemplo, una fecha en la cultura rusa (Rusia), "ru-RU", consiste en el número del día y el nombre genitivo del mes.

More info…

EDITAR: Si necesita nombres en inglés mes, usted puede configurar su cultura actual como en-US

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

¿cómo puedo obtener solo los meses de inglés? – LIX

+0

¡Buen punto! +1 –

+0

Debe configurar su cultura actual como en-US Thread.CurrentThread.CurrentCulture = new CultureInfo ("en-US"); y luego use tring [] monthNames = System.Globalization.CultureInfo.CurrentCulture.DateTimeFormat.MonthGenitiveNames; Esto asegurará que el código esté listo para la localización – Ngm

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

Sí, ¿qué pasa con la escritura de lo que quiere decir? Kudos para recordar cómo besar. –

+0

y que ni siquiera necesitan 'nueva cadena [ ] {',' new [] {'funcionará. – Yogesh

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

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

Salida:

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

Actualización:
tenga en cuenta que para los diferentes locales/culturas, la salida podría no estar en Inglés. Aunque no lo he probado antes.

Sólo para Inglés de Estados Unidos:

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

Hola Debe tener cuidado con el uso de algunos idiomas de MonthNames como el ruso, consulte mi publicación a continuación – Ngm

+0

El método 'MonthGenitiveNames' de Ngm podría ser más adecuado según el contexto. –

+0

OK, agregué "' en-US' cultureinfo "Month Names –

6

Una alternativa que se espera que enseña cómo se puede aplicar la función gama de crear para secuencial cosas.

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

Lo que está haciendo es crear un objeto DateTime (startDate) y el uso de ese objeto para generar todas las otras fechas relativas a la misma.

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

  2. Select (startDate.AddMonths) alimenta cada uno de esos enteros a la función AddMonths de startDate, que produce una lista de fechas de enero a diciembre.

  3. Select (m => m.ToString ("aaaa MMMM") toma cada una de las fechas de enero a diciembre y las convierte en una cadena con formato (en este caso "enero de 2014")

  4. ToList() evalúa todas las funciones y la devuelve como una lista de cadenas.

+0

no es la mejor manera de obtener los nombres de los meses, pero definitivamente es una excelente solución alternativa. +1 por el buen esfuerzo y explicación. – Kagawa

Cuestiones relacionadas