¿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!


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");

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)

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);

7

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

DateTime dt = DateTime.Today;

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

Console.WriteLine(thisMonth);

-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;
    }

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
Al usar nuestro sitio, usted reconoce que ha leído y comprende nuestra Política de Cookies y Política de Privacidad.
Licensed under cc by-sa 3.0 with attribution required.