DateTime.Now.DayOfWeek.ToString() with CultureInfo

C#asp.netDatetimeCultureinfo

C# Problem Overview


I have the code:

DateTime.Now.DayOfWeek.ToString()

That give's me the english day of the week name, I want to have the german version, how to add CultureInfo here to get the german day of the week name?

C# Solutions


Solution 1 - C#

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

Solution 2 - C#

You can use the DateTimeFormat.DayNames property of the german CultureInfo. For example:

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

Solution 3 - C#

This is the solution in Visual Basic

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

Return GermanCultureInfo.DateTimeFormat.GetDayName(DayOfWeek.Sunday)

The function of the solution is Obsolete by the way DateTime.Now.ToString("dddd", new System.Globalization.CultureInfo("de-DE"))

Solution 4 - C#

DayOfWeek is an enumeration, so the ToString method on it is not culture sensitive.

You will need to write a function to convert the Enum value to a corresponding string in German, if you insist on using DayOfWeek:

string DayOfWeekGerman(DayOfWeek dow)
{

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

A better approach is to use ToString from DateTime directly:

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

Solution 5 - C#

I like this one:

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

And according to your question:

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

Solution 6 - C#

You can use this code to return your day name as same language

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

enter image description here note: DateTime returns a DayOfWeek Enumeration so I use the code to return from another Enumeration

Attributions

All content for this solution is sourced from the original question on Stackoverflow.

The content on this page is licensed under the Attribution-ShareAlike 4.0 International (CC BY-SA 4.0) license.

Content TypeOriginal AuthorOriginal Content on Stackoverflow
QuestionPassionateDeveloperView Question on Stackoverflow
Solution 1 - C#DiegoView Answer on Stackoverflow
Solution 2 - C#Jean-BaptisteView Answer on Stackoverflow
Solution 3 - C#DespotaView Answer on Stackoverflow
Solution 4 - C#OdedView Answer on Stackoverflow
Solution 5 - C#isxakerView Answer on Stackoverflow
Solution 6 - C#Hamada OmaraView Answer on Stackoverflow