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.