2008-10-23 12 views
5

actualmente i obtener el resultado a continuación de la siguiente # línea C del código cuando en es-MX Culturacómo mayúscula y la primera letra del mes de ToLongDateString() dan como resultado es-mx Culture?

Thread.CurrentThread.CurrentCulture = 
    Thread.CurrentThread.CurrentUICulture = new 
       CultureInfo("es-mx"); 

    <span><%=DateTime.Now.ToLongDateString()%></span> 

miércoles, 22 de octubre de 2008

me gustaría obtener la siguiente

Miércoles, 22 de Octubre de 2008

¿Necesito crear mi propia cultura?

Respuesta

7

No necesita crear su propia cultura. Solo necesita cambiar la propiedad DateTimeFormat.DayNames y DateTimeFormat.MonthNames en la cultura actual.

decir

 string[] newNames = { "Lunes", "Martes", "Miercoles", "Jueves", "Viernes", "Sabado", "Domingo" }; 
     Thread.CurrentThread.CurrentCulture.DateTimeFormat.DayNames = newNames; 

Sin embargo, es raro que en-mostrarnos meses y los días con la primera letra en mayúscula y para MX-ES no.

Espero que ayude !.

+4

"es raro que en-US muestre meses y días con la primera letra en mayúscula y para mx-ES no" - en realidad, cada uno sigue las reglas gramaticales de su lenguaje. En español, los nombres de día y mes usan minúsculas. – Joe

+0

Oye, eso es verdad. Soy mexicano. No sabía que la forma correcta era usar minúsculas. En México muchas personas escriben meses y días usando el título del caso, probablemente debido a una influencia de los EE. UU. –

+0

si usa la traducción de Microsoft está bien para usted puede usar 'Thread.CurrentThread.CurrentCulture = new CultureInfo (" es-ES ");' – dvdmn

1

El patrón de longDate de español (México) es

dddd, dd' de 'MMMM' de 'yyyy

acuerdo con Thread.CurrentThread.CurrentCulture.DateTimeFormat.LongDatePattern. Supongo que solo tiene que convertir manualmente las letras iniciales del día y el mes a mayúsculas o puede usar Thread.CurrentThread.CurrentCulture.TextInfo.ToTitleCase y luego reemplazar "De" con "de".

+0

Este no es un buen enfoque cuando se I18Ning su trabajo, ya que requiere un conocimiento profundo de las traducciones. –

+0

sí, mi mal. Pero, ¿cómo te acercarías en la cultura de manera ignífuga? – jfs

0

primeros dos solutions trabaja bien, pero lo que si nos gustaría extender esto a cualquier cultura por lo que ocurrió con este enfoque puedo cambiar las matrices de fecha y hora actual cultura en TitleCase

private void SetDateTimeFormatNames() 
     { 

      Thread.CurrentThread.CurrentCulture.DateTimeFormat.DayNames = ConvertoToTitleCase(Thread.CurrentThread.CurrentCulture.DateTimeFormat.DayNames); 
      Thread.CurrentThread.CurrentCulture.DateTimeFormat.MonthNames = ConvertoToTitleCase(Thread.CurrentThread.CurrentCulture.DateTimeFormat.MonthNames); 

     } 

private string[] ConvertoToTitleCase(string[] arrayToConvert) 
      { 
       for (int i = 0; i < arrayToConvert.Length; i++) 
       { 
        arrayToConvert[i] = Thread.CurrentThread.CurrentCulture.TextInfo.ToTitleCase(arrayToConvert[i]); 
       } 

       return arrayToConvert; 
      } 

cómo se puede mejorar sin el Loop?

0

un poco tarde pero esto funciona para mí!

public static string GetFecha() 
    { 
     System.Globalization.CultureInfo culture = new System.Globalization.CultureInfo("es-EC"); 
     System.Threading.Thread.CurrentThread.CurrentCulture = culture; 

     // maldita sea! 
     string strDate = culture.TextInfo.ToTitleCase(DateTime.Now.ToLongDateString()); 

     return strDate.Replace("De", "de"); 


    } 
+0

Peor nombre de función alguna vez. Spanglish es malvado – ElektroStudios

Cuestiones relacionadas