web-dev-qa-db-fra.com

DateTime.Now.DayOfWeek.ToString () avec CultureInfo

J'ai le code:

DateTime.Now.DayOfWeek.ToString()

Cela me donne le nom anglais du jour de la semaine, je souhaite avoir la version allemande, comment ajouter CultureInfo ici pour obtenir le nom du jour allemand de la semaine?

60
Kovu
var culture = new System.Globalization.CultureInfo("de-DE");
var day = culture.DateTimeFormat.GetDayName(DateTime.Today.DayOfWeek);
109
Diego Torres

Vous pouvez utiliser la propriété DateTimeFormat.DayNames de la version allemande CultureInfo. Par exemple:

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

Ceci est la solution dans Visual Basic

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

Return GermanCultureInfo.DateTimeFormat.GetDayName(DayOfWeek.Sunday)

La fonction de la solution est obsolète en passant DateTime.Now.ToString("dddd", new System.Globalization.CultureInfo("de-DE"))

6
Despota

DayOfWeek est une énumération, la méthode ToString n'est pas sensible à la culture.

Vous devrez écrire une fonction pour convertir la valeur Enum en une chaîne correspondante en allemand, si vous insistez pour utiliser DayOfWeek:

string DayOfWeekGerman(DayOfWeek dow)
{

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

Une meilleure approche consiste à utiliser ToString à partir de DateTime directement:

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

J'aime celui la:

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

Et selon votre question:

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