2011-04-19 24 views
54

tengo el código:DateTime.Now.DayOfWeek.ToString() con CultureInfo

DateTime.Now.DayOfWeek.ToString() 

que dan soy yo el día Inglés del nombre de la semana, quiero tener la versión alemana, cómo agregar CultureInfo aquí para obtener el nombre del día alemán de la semana?

Respuesta

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

Funciona bien, muchas gracias :) – Kovu

4

DayOfWeek es una enumeración, por lo que el método ToString en él no es sensible a la cultura.

Usted tendrá que escribir una función para convertir el valor de enumeración a una cadena correspondiente en alemán, si usted insiste en el uso de DayOfWeek:

string DayOfWeekGerman(DayOfWeek dow) 
{ 

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

Un mejor enfoque es utilizar ToString de DateTime directamente:

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

bien, así cómo consigo el nombre alemán? – Kovu

+0

El artículo menciona 'DateTime.ToString (String)' o 'DateTime.ToString (String, IFormatProvider)' para el nombre localizado; no es necesario escribir una función para él. –

13

puede utilizar la propiedad DateTimeFormat.DayNames del alemán CultureInfo. Por ejemplo:

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

Ésta es la solución en Visual Basic

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

Return GermanCultureInfo.DateTimeFormat.GetDayName(DayOfWeek.Sunday) 

La función de la solución es obsoleto por cierto DateTime.Now.ToString("dddd", new System.Globalization.CultureInfo("de-DE"))

Cuestiones relacionadas