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!


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

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)

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

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

-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
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
En utilisant notre site, vous reconnaissez avoir lu et compris notre politique liée aux cookies et notre politique de confidentialité.
Licensed under cc by-sa 3.0 with attribution required.