DateTime.Now.DayOfWeek.ToString () mit CultureInfo


70

Ich habe den Code:

DateTime.Now.DayOfWeek.ToString()

Das gibt mir den Namen des englischen Wochentags. Ich möchte die deutsche Version haben. Wie füge ich CultureInfo hier hinzu, um den Namen des deutschen Wochentags zu erhalten?

Antworten:


130
var culture = new System.Globalization.CultureInfo("de-DE");
var day = culture.DateTimeFormat.GetDayName(DateTime.Today.DayOfWeek);

14

Sie können das DateTimeFormat.DayNamesEigentum des Deutschen nutzen CultureInfo. Zum Beispiel:

CultureInfo german = new CultureInfo("de-DE");
string sunday = german.DateTimeFormat.DayNames[(int)DayOfWeek.Sunday];

6

Dies ist die Lösung in Visual Basic

Dim GermanCultureInfo As Globalization.CultureInfo = New Globalization.CultureInfo("de-DE")

Return GermanCultureInfo.DateTimeFormat.GetDayName(DayOfWeek.Sunday)

Die Funktion der Lösung ist übrigens veraltet DateTime.Now.ToString("dddd", new System.Globalization.CultureInfo("de-DE"))


5

DayOfWeekist eine Aufzählung, daher ist die ToStringMethode nicht kulturempfindlich.

Sie müssen eine Funktion schreiben, um den Enum-Wert in eine entsprechende Zeichenfolge in Deutsch zu konvertieren, wenn Sie darauf bestehen, Folgendes zu verwenden DayOfWeek:

string DayOfWeekGerman(DayOfWeek dow)
{

    switch(dow)
    {
      case(DayOfWeek.Sunday)
         return "German Sunday";
      case(DayOfWeek.Monday)
         return "German Monday";
      ...
    }
}

Ein besserer Ansatz ist die Verwendung ToStringvon DateTimedirekt:

CultureInfo german = new CultureInfo("de-DE");
string dayName = DateTime.Now.ToString("dddd", german);

1
Der Artikel erwähnt DateTime.ToString(String)oder den DateTime.ToString(String, IFormatProvider)für den lokalisierten Namen - es ist nicht erforderlich, eine Funktion dafür zu schreiben.
Ian Pugsley

2

Ich mag dieses:

public static class DateTimeExtension
{
    public static string GetDayOfWeek(this DateTime uiDateTime, CultureInfo culture = null)
    {
        if (culture == null)
        {
            culture = Thread.CurrentThread.CurrentUICulture;
        }

        return culture.DateTimeFormat.GetDayName(uiDateTime.DayOfWeek);
    }
}

Und nach Ihrer Frage:

var culture = new System.Globalization.CultureInfo("de-DE");
var day = uiDateTime.GetDayOfWeek(culture);

0

Mit diesem Code können Sie Ihren Tagesnamen in derselben Sprache zurückgeben

CultureInfo myCI = new CultureInfo("ar-EG");   
MessageBox.Show(myCI.DateTimeFormat.GetDayName(DayOfWeek.Friday));

Geben Sie hier die Bildbeschreibung ein Hinweis: DateTimeGibt eine DayOfWeekAufzählung zurück, daher verwende ich den Code, um von einer anderen Aufzählung zurückzukehren

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.