Jak uzyskać nazwę miesiąca w C #?


Odpowiedzi:


171

Możesz użyć CultureInfo, aby uzyskać nazwę miesiąca. Możesz nawet uzyskać krótką nazwę miesiąca, a także inne fajne rzeczy.

Sugerowałbym, abyś umieścił je w metodach rozszerzających, które pozwolą ci później napisać mniej kodu. Możesz jednak wdrożyć, jak chcesz.

Oto przykład, jak to zrobić za pomocą metod rozszerzających:

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

Mam nadzieję że to pomoże!


5
Mogę dodać, że istnieje InvariantInfonieruchomość, z której można również skorzystać. Moim zdaniem następujący format jest prostszy / bardziej czytelny: DateTimeFormatInfo.InvariantInfo.GetAbbreviatedMonthName(...)lubDateTimeFormatInfo.CurrentInfo.GetAbbreviatedMonthName(...)
bsara,

121

Użyj specyfikatora formatu „MMMM”:

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

17
zakładając, że masz randkę. jeśli nie:var month = new DateTime(1,i,1).ToString("MMMM");
Myster

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

Nie potrzebujesz ToString ().
Richard Anthony Hein

5
A właściwie String.Format. Po prostu DateTime.Now.ToString („MMMM”) jest prostsze.
Jon Skeet

1
Ja też bym to zasugerował, ale już miałeś to jako inną odpowiedź. Metoda Gortoka również demonstruje użycie symboli zastępczych do formatowania, więc myślę, że jest to dobry alternatywny przykład.
Richard Anthony Hein

7

Jeśli chcesz tylko użyć MonthName, odwołaj się do Microsoft.VisualBasic i znajduje się w Microsoft.VisualBasic.DateAndTime

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

7

Przypuśćmy, że masz dzisiaj randkę. Mam nadzieję, że to ci pomoże.

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

11
To nie odpowiada na pytanie PO, ponieważ powiedzieli: „Naprawdę nie chcę pisać ogromnego oświadczenia o przełączniku […]” (podkreślenie moje). Przed napisaniem odpowiedzi przeczytaj szczegółowo pytania.
trąbka
Korzystając z naszej strony potwierdzasz, że przeczytałeś(-aś) i rozumiesz nasze zasady używania plików cookie i zasady ochrony prywatności.
Licensed under cc by-sa 3.0 with attribution required.