Wie erhalte ich den Monatsnamen in C #?


Antworten:


166

Sie können CultureInfo verwenden, um den Monatsnamen abzurufen. Sie können sogar den kurzen Monatsnamen sowie andere lustige Dinge erhalten.

Ich würde vorschlagen, dass Sie diese in Erweiterungsmethoden einfügen, mit denen Sie später weniger Code schreiben können. Sie können jedoch implementieren, wie Sie möchten.

Hier ist ein Beispiel für die Verwendung von Erweiterungsmethoden:

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

Hoffe das hilft!


5
Darf ich hinzufügen, dass es eine InvariantInfoEigenschaft gibt, die auch verwendet werden kann. Und meiner Meinung nach ist das Folgende ein einfacheres / lesbareres Format dafür: DateTimeFormatInfo.InvariantInfo.GetAbbreviatedMonthName(...)oderDateTimeFormatInfo.CurrentInfo.GetAbbreviatedMonthName(...)
bsara

119

Verwenden Sie den Formatbezeichner "MMMM":

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

17
vorausgesetzt, Sie haben ein Datum. wenn nicht:var month = new DateTime(1,i,1).ToString("MMMM");
Myster

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

Sie benötigen den ToString () nicht.
Richard Anthony Hein

5
Oder eigentlich String.Format. Nur DateTime.Now.ToString ("MMMM") ist einfacher.
Jon Skeet

1
Ich hätte das auch vorgeschlagen, aber Sie hatten das bereits als eine andere Antwort. Die Methode von Gortok demonstriert auch die Verwendung von Platzhaltern für die Formatierung. Ich denke, dies ist ein gutes alternatives Beispiel.
Richard Anthony Hein

7

Wenn Sie nur MonthName verwenden möchten, verweisen Sie auf Microsoft.VisualBasic und es befindet sich in Microsoft.VisualBasic.DateAndTime

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

7

Angenommen, Ihr Datum ist heute. Hoffe das hilft dir.

DateTime dt = DateTime.Today;

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

Console.WriteLine(thisMonth);

-13
    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
Das beantwortet nicht die Frage nach der OP, weil sie sagte: „Ich weiß wirklich nicht wollen , einen großen switch - Anweisung [...] schreiben“ (Hervorhebung von mir). Bitte lesen Sie die Fragen ausführlich durch, bevor Sie eine Antwort schreiben.
Hupen
Durch die Nutzung unserer Website bestätigen Sie, dass Sie unsere Cookie-Richtlinie und Datenschutzrichtlinie gelesen und verstanden haben.
Licensed under cc by-sa 3.0 with attribution required.