Come ottenere il nome del mese in C #?


Risposte:


167

Puoi usare CultureInfo per ottenere il nome del mese. Puoi persino ottenere il nome breve del mese e altre cose divertenti.

Ti suggerisco di inserirli in metodi di estensione, che ti consentiranno di scrivere meno codice in seguito. Tuttavia puoi implementare come preferisci.

Ecco un esempio di come farlo utilizzando i metodi di estensione:

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

Spero che questo ti aiuti!


5
Posso aggiungere che c'è anche una InvariantInfoproprietà che può essere utilizzata. E, a mio parere, il seguente è un formato più semplice / leggibile per farlo: DateTimeFormatInfo.InvariantInfo.GetAbbreviatedMonthName(...)oDateTimeFormatInfo.CurrentInfo.GetAbbreviatedMonthName(...)
bsara

119

Utilizza l'identificatore di formato "MMMM":

string month = dateTime.ToString("MMMM");

17
supponendo che tu abbia un appuntamento. in caso contrario:var month = new DateTime(1,i,1).ToString("MMMM");
Myster

14
string CurrentMonth = String.Format("{0:MMMM}", DateTime.Now)

Non hai bisogno di ToString ().
Richard Anthony Hein,

5
O String.Format, in realtà. Solo DateTime.Now.ToString ("MMMM") è più semplice.
Jon Skeet

1
Avrei suggerito anche quello, ma l'avevi già come un'altra risposta. Il metodo di Gortok dimostra anche l'uso di segnaposto per eseguire la formattazione, quindi penso che sia un buon esempio alternativo.
Richard Anthony Hein,

7

Se vuoi solo usare MonthName, fai riferimento a Microsoft.VisualBasic ed è in Microsoft.VisualBasic.DateAndTime

//eg. Get January
String monthName = Microsoft.VisualBasic.DateAndTime.MonthName(1);

7

Supponiamo che la tua data sia oggi. Spero che questo ti aiuti.

DateTime dt = DateTime.Today;

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

Console.WriteLine(thisMonth);

-13
    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
Questo non risponde alla domanda del PO, perché hanno detto: "Io davvero non voglio scrivere un'istruzione switch enorme [...]" (sottolineatura mia). Si prega di leggere le domande in dettaglio prima di scrivere una risposta.
clacson
Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.