DateTime.Now.DayOfWeek.ToString () с CultureInfo - PullRequest
62 голосов
/ 19 апреля 2011

У меня есть код:

DateTime.Now.DayOfWeek.ToString()

Это дает мне название английского дня недели, я хочу иметь немецкую версию, как добавить CultureInfo сюда, чтобы получить немецкое название дня недели

Ответы [ 6 ]

113 голосов
/ 19 апреля 2011
var culture = new System.Globalization.CultureInfo("de-DE");
var day = culture.DateTimeFormat.GetDayName(DateTime.Today.DayOfWeek);
13 голосов
/ 25 августа 2011

Вы можете использовать DateTimeFormat.DayNames свойство немецкого CultureInfo. Например:

CultureInfo german = new CultureInfo("de-DE");
string sunday = german.DateTimeFormat.DayNames[(int)DayOfWeek.Sunday];
6 голосов
/ 30 июня 2012

Это решение в Visual Basic

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

Return GermanCultureInfo.DateTimeFormat.GetDayName(DayOfWeek.Sunday)

Кстати, функция решения устарела DateTime.Now.ToString("dddd", new System.Globalization.CultureInfo("de-DE"))

4 голосов
/ 19 апреля 2011

DayOfWeek является перечислением, поэтому метод ToString для него не учитывает культурные особенности.

Вам потребуется написать функцию для преобразования значения Enum в соответствующийстрока на немецком языке, если вы настаиваете на использовании DayOfWeek:

string DayOfWeekGerman(DayOfWeek dow)
{

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

Лучше всего использовать ToString из DateTime напрямую:

CultureInfo german = new CultureInfo("de-DE");
string dayName = DateTime.Now.ToString("dddd", german);
0 голосов
/ 25 октября 2018

Мне нравится этот:

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

И в соответствии с вашим вопросом:

var culture = new System.Globalization.CultureInfo("de-DE");
var day = uiDateTime.GetDayOfWeek(culture);
0 голосов
/ 09 июля 2018

Вы можете использовать этот код, чтобы вернуть название дня на том же языке

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

enter image description here примечание: DateTime возвращает перечисление DayOfWeek, поэтому я использую кодвернуться из другого Перечисления

...