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?
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:
var culture = new System.Globalization.CultureInfo("de-DE");
var day = culture.DateTimeFormat.GetDayName(DateTime.Today.DayOfWeek);
Sie können das DateTimeFormat.DayNames
Eigentum des Deutschen nutzen CultureInfo
. Zum Beispiel:
CultureInfo german = new CultureInfo("de-DE");
string sunday = german.DateTimeFormat.DayNames[(int)DayOfWeek.Sunday];
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"))
DayOfWeek
ist eine Aufzählung, daher ist die ToString
Methode 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 ToString
von DateTime
direkt:
CultureInfo german = new CultureInfo("de-DE");
string dayName = DateTime.Now.ToString("dddd", german);
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);
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));
Hinweis: DateTime
Gibt eine DayOfWeek
Aufzählung zurück, daher verwende ich den Code, um von einer anderen Aufzählung zurückzukehren
DateTime.ToString(String)
oder denDateTime.ToString(String, IFormatProvider)
für den lokalisierten Namen - es ist nicht erforderlich, eine Funktion dafür zu schreiben.