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?

PassionateDeveloper
quelle

Antworten:

130
var culture = new System.Globalization.CultureInfo("de-DE");
var day = culture.DateTimeFormat.GetDayName(DateTime.Today.DayOfWeek);
Diego Torres
quelle
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];
Jean-Baptiste
quelle
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"))

Despota
quelle
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);
Oded
quelle
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);
isxaker
quelle
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

Hamada Omara
quelle