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!

CodeLikeBeaker
źródło
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");
Jon Skeet
źródło
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)
George Stocker
źródło
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);
RobV
źródło
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);
Binamra
źródło
-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;
    }
Anioł Alvarado Sagel
źródło
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