У меня есть код:
DateTime.Now.DayOfWeek.ToString()
Это даст мне английский день недели, я хочу иметь версию на немецком языке, как добавить CultureInfo здесь, чтобы получить немецкий день названия недели?
У меня есть код:
DateTime.Now.DayOfWeek.ToString()
Это даст мне английский день недели, я хочу иметь версию на немецком языке, как добавить CultureInfo здесь, чтобы получить немецкий день названия недели?
var culture = new System.Globalization.CultureInfo("de-DE");
var day = culture.DateTimeFormat.GetDayName(DateTime.Today.DayOfWeek);
Вы можете использовать свойство DateTimeFormat.DayNames
для немецкого CultureInfo
.
Например:
CultureInfo german = new CultureInfo("de-DE");
string sunday = german.DateTimeFormat.DayNames[(int)DayOfWeek.Sunday];
Это решение в 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"))
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);
Мне нравится этот:
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);
var localWeekDayName = DateTime.Now.ToString("dddd");
Вы можете использовать этот код, чтобы вернуть свое имя в качестве одного и того же языка
CultureInfo myCI = new CultureInfo("ar-EG");
MessageBox.Show(myCI.DateTimeFormat.GetDayName(DayOfWeek.Friday));
note: DateTime
возвращает перечисление DayOfWeek
поэтому я использую код для возврата из другого перечисления