comment mettre en majuscule la date et le mois de la première lettre du résultat de ToLongDateString () dans la culture es-mx?

StackOverflow https://stackoverflow.com/questions/228559

Question

J'obtiens actuellement le résultat ci-dessous à partir de la ligne de code C # suivante en es-MX Culture

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

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

mi & # 233; écoles, 22 octobre 2008

je voudrais obtenir ce qui suit

Régions, le 22 octobre 2008

Dois-je créer ma propre culture?

Était-ce utile?

La solution

Vous n'avez pas besoin de créer votre propre culture. Il vous suffit de modifier les propriétés DateTimeFormat.DayNames et DateTimeFormat.MonthNames dans la culture actuelle.

c'est-à-dire

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

Cependant, il est étrange que les États-Unis affichent des mois et des jours avec la première lettre majuscule, mais pas pour mx-ES.

J'espère que ça aide!.

Autres conseils

Le modèle de LongDate pour l'espagnol (Mexique) est

.
  

dddd, dd 'de' MMMM 'de' yyyy

selon Thread.CurrentThread.CurrentCulture.DateTimeFormat .LongDatePattern . Je suppose que vous devez simplement convertir manuellement les premières lettres du jour et du mois en majuscules ou vous pouvez utiliser Thread.CurrentThread.CurrentCulture.TextInfo.ToTitleCase , puis remplacez & De; De " avec "de".

Les deux premières solutions fonctionnent bien, mais si nous souhaitions étendre cela à n’importe quelle culture, j’ai donc proposé cette approche: je change les tableaux de dates de culture actuels 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;
            }

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

un peu tard 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");


    }
Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top