¿Cómo obtener el nombre del mes en C #?

Respuestas:

168

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;

class Program
{
    static void Main()
    {

        Console.WriteLine(DateTime.Now.ToMonthName());
        Console.WriteLine(DateTime.Now.ToShortMonthName());
        Console.Read();
    }
}

static class DateTimeExtensions
{
    public static string ToMonthName(this DateTime dateTime)
    {
        return CultureInfo.CurrentCulture.DateTimeFormat.GetMonthName(dateTime.Month);
    }

    public static string ToShortMonthName(this DateTime dateTime)
    {
        return CultureInfo.CurrentCulture.DateTimeFormat.GetAbbreviatedMonthName(dateTime.Month);
    }
}

¡Espero que esto ayude!

CodeLikeBeaker
fuente
5
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(...)
bsara
120

Utilice el especificador de formato "MMMM":

string month = dateTime.ToString("MMMM");
Jon Skeet
fuente
17
asumiendo que tienes una cita. si no:var month = new DateTime(1,i,1).ToString("MMMM");
Myster
14
string CurrentMonth = String.Format("{0:MMMM}", DateTime.Now)
George Stocker
fuente
No necesita ToString ().
Richard Anthony Hein
5
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 January
String monthName = Microsoft.VisualBasic.DateAndTime.MonthName(1);
RobV
fuente
7

Suponiendo que tu cita sea hoy. Espero que esto te ayude.

DateTime dt = DateTime.Today;

string thisMonth= dt.ToString("MMMM");

Console.WriteLine(thisMonth);
Binamra
fuente
-15
    private string MonthName(int m)
    {
        string res;
        switch (m)
        {
            case 1:
                res="Ene";
                break;
            case 2:
                res = "Feb";
                break;
            case 3:
                res = "Mar";
                break;
            case 4:
                res = "Abr";
                break;
            case 5:
                res = "May";
                break;
            case 6:
                res = "Jun";
                break;
            case 7:
                res = "Jul";
                break;
            case 8:
                res = "Ago";
                break;
            case 9:
                res = "Sep";
                break;
            case 10:
                res = "Oct";
                break;
            case 11:
                res = "Nov";
                break;
            case 12:
                res = "Dic";
                break;
            default:
                res = "Nulo";
                break;
        }
        return res;
    }
Ángel Alvarado Sagel
fuente
10
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.
bocinazo