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!

CodeLikeBeaker
quelle
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");
Jon Skeet
quelle
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)
George Stocker
quelle
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);
RobV
quelle
7

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

DateTime dt = DateTime.Today;

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

Console.WriteLine(thisMonth);
Binamra
quelle
-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;
    }
Engel Alvarado Sagel
quelle
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