2008-10-23 5 views
5

actuellement j'obtenir le résultat ci-dessous de ce qui suit C# ligne de code lors de la culture es-MXcomment majuscule date et mois première lettre de ToLongDateString() résultat dans es-mx Culture?

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

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

jueves, 22 de octubre de 2008

je voudrais obtenir le

suivant

Mercredi, 22 octobre 2008

Dois-je construire ma propre culture?

Répondre

7

Vous n'avez pas besoin de créer votre propre culture. Vous devez uniquement modifier la propriété DateTimeFormat.DayNames et DateTimeFormat.MonthNames dans la culture actuelle.

à savoir

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

Cependant, il est bizarre que en États-Unis montrent des mois et des jours avec la première lettre en majuscule et pour mx-ES non.

Espérons que ça aide !.

+4

"c'est bizarre qu'en-US montrent des mois et des jours avec la première lettre majuscule et pour mx-ES pas" - pas vraiment, chacun suit les règles de grammaire de sa langue. En espagnol, les noms de jour et de mois utilisent des minuscules. – Joe

+0

Hé c'est vrai. Je suis mexicain je ne savais pas que la bonne façon était d'utiliser des minuscules. Au Mexique beaucoup de gens écrivent des mois et des jours en utilisant le cas de titre, probablement en raison d'une influence américaine –

+0

si l'utilisation de la traduction de Microsoft est ok pour vous, vous pouvez utiliser 'Thread.CurrentThread.CurrentCulture = new CultureInfo (" es-ES ");' – dvdmn

1

Le motif de longdate pour l'espagnol (Mexique) est

dddd, dd' de 'MMMM' de 'yyyy

selon Thread.CurrentThread.CurrentCulture.DateTimeFormat.LongDatePattern. Je suppose que vous avez juste à convertir manuellement les lettres initiales du jour et du mois en majuscule ou vous pouvez utiliser Thread.CurrentThread.CurrentCulture.TextInfo.ToTitleCase puis remplacer "De" par "de".

+0

Ce n'est pas une bonne approche lorsque vous travaillez, car cela nécessite une connaissance approfondie des traductions. –

+0

ouais mon mauvais. Mais comment aborderiez-vous la culture de manière ignostique? – jfs

0

deux premiers Solutions fonctionne très bien, mais si nous aimerions l'étendre à toute culture donc je suis venu avec cette approche que je change les tableaux actuels de date et heure de la culture dans 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; 
      } 

comment cela peut être amélioré sans la boucle?

0

un peu en retard mais ça marche pour moi!

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

Le pire nom de fonction jamais. Spanglish est le mal. – ElektroStudios

Questions connexes