Comment obtenir le nom du mois en C #?

Réponses:

167

Vous pouvez utiliser CultureInfo pour obtenir le nom du mois. Vous pouvez même obtenir le nom court du mois ainsi que d'autres choses amusantes.

Je vous suggère de les mettre dans des méthodes d'extension, ce qui vous permettra d'écrire moins de code plus tard. Cependant, vous pouvez mettre en œuvre comme vous le souhaitez.

Voici un exemple de la façon de le faire à l'aide de méthodes d'extension:

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

J'espère que cela t'aides!

CodeLikeBeaker
la source
5
Puis-je ajouter qu'il existe une InvariantInfopropriété qui peut également être utilisée. Et, à mon avis, ce qui suit est un format plus simple / lisible pour faire cela: DateTimeFormatInfo.InvariantInfo.GetAbbreviatedMonthName(...)ouDateTimeFormatInfo.CurrentInfo.GetAbbreviatedMonthName(...)
bsara
119

Utilisez le spécificateur de format "MMMM":

string month = dateTime.ToString("MMMM");
Jon Skeet
la source
17
en supposant que vous ayez un rendez-vous. sinon:var month = new DateTime(1,i,1).ToString("MMMM");
Myster
14
string CurrentMonth = String.Format("{0:MMMM}", DateTime.Now)
George Stocker
la source
Vous n'avez pas besoin du ToString ().
Richard Anthony Hein
5
Ou String.Format, en fait. Just DateTime.Now.ToString ("MMMM") est plus simple.
Jon Skeet
1
J'aurais suggéré cela aussi, mais vous aviez déjà cela comme une autre réponse. La méthode de Gortok démontre également l'utilisation d'espaces réservés pour faire le formatage, donc je pense que c'est un bon exemple alternatif.
Richard Anthony Hein
7

Si vous souhaitez simplement utiliser MonthName, faites référence à Microsoft.VisualBasic et c'est dans Microsoft.VisualBasic.DateAndTime

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

Supposons que votre date soit aujourd'hui. J'espère que cela vous aide.

DateTime dt = DateTime.Today;

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

Console.WriteLine(thisMonth);
Binamra
la source
-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;
    }
Ange Alvarado Sagel
la source
10
Cela ne répond pas à la question de l'OP, car ils ont dit: "Je ne veux vraiment pas écrire une énorme instruction de commutation [...]" (c'est moi qui souligne). Veuillez lire les questions en détail avant d'écrire une réponse.
klaxonner le