¿Cómo se puede encontrar el nombre del mes en C #? No quiero escribir una gran switchdeclaración o ifdeclaración en el mes int. En VB.Net puede usar MonthName(), pero ¿qué pasa con C #?
Puede utilizar CultureInfo para obtener el nombre del mes. Incluso puede obtener el nombre corto del mes y otras cosas divertidas.
Le sugiero que los ponga en métodos de extensión, lo que le permitirá escribir menos código más adelante. Sin embargo, puede implementarlo como desee.
Aquí hay un ejemplo de cómo hacerlo usando métodos de extensión:
using System;
using System.Globalization;classProgram{staticvoidMain(){Console.WriteLine(DateTime.Now.ToMonthName());Console.WriteLine(DateTime.Now.ToShortMonthName());Console.Read();}}staticclassDateTimeExtensions{publicstaticstringToMonthName(thisDateTime dateTime){returnCultureInfo.CurrentCulture.DateTimeFormat.GetMonthName(dateTime.Month);}publicstaticstringToShortMonthName(thisDateTime dateTime){returnCultureInfo.CurrentCulture.DateTimeFormat.GetAbbreviatedMonthName(dateTime.Month);}}
Debo añadir que hay una InvariantInfopropiedad que también se puede utilizar. Y, en mi opinión, el siguiente es un formato más simple / legible para hacer esto: DateTimeFormatInfo.InvariantInfo.GetAbbreviatedMonthName(...)oDateTimeFormatInfo.CurrentInfo.GetAbbreviatedMonthName(...)
O String.Format, en realidad. Solo DateTime.Now.ToString ("MMMM") es más simple.
Jon Skeet
1
Yo también habría sugerido eso, pero ya lo tenías como otra respuesta. El método de Gortok también demuestra el uso de marcadores de posición para dar formato, así que creo que es un buen ejemplo alternativo.
Richard Anthony Hein
7
Si solo desea usar MonthName, haga referencia a Microsoft.VisualBasic y está en Microsoft.VisualBasic.DateAndTime
//eg. Get JanuaryString monthName =Microsoft.VisualBasic.DateAndTime.MonthName(1);
privatestringMonthName(int m){string res;switch(m){case1:
res="Ene";break;case2:
res ="Feb";break;case3:
res ="Mar";break;case4:
res ="Abr";break;case5:
res ="May";break;case6:
res ="Jun";break;case7:
res ="Jul";break;case8:
res ="Ago";break;case9:
res ="Sep";break;case10:
res ="Oct";break;case11:
res ="Nov";break;case12:
res ="Dic";break;default:
res ="Nulo";break;}return res;}
Esto no responde a la pregunta del OP, porque dijeron: "Realmente no quiero escribir una gran declaración de cambio [...]" (énfasis mío). Lea las preguntas en detalle antes de escribir una respuesta.
Respuestas:
Puede utilizar CultureInfo para obtener el nombre del mes. Incluso puede obtener el nombre corto del mes y otras cosas divertidas.
Le sugiero que los ponga en métodos de extensión, lo que le permitirá escribir menos código más adelante. Sin embargo, puede implementarlo como desee.
Aquí hay un ejemplo de cómo hacerlo usando métodos de extensión:
¡Espero que esto ayude!
fuente
InvariantInfo
propiedad que también se puede utilizar. Y, en mi opinión, el siguiente es un formato más simple / legible para hacer esto:DateTimeFormatInfo.InvariantInfo.GetAbbreviatedMonthName(...)
oDateTimeFormatInfo.CurrentInfo.GetAbbreviatedMonthName(...)
Utilice el especificador de formato "MMMM":
fuente
var month = new DateTime(1,i,1).ToString("MMMM");
fuente
Si solo desea usar MonthName, haga referencia a Microsoft.VisualBasic y está en Microsoft.VisualBasic.DateAndTime
fuente
Suponiendo que tu cita sea hoy. Espero que esto te ayude.
fuente
fuente