come maiuscole e minuscole la prima lettera di ToLongDateString () danno come risultato es-mx Culture?

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

Domanda

attualmente ottengo il seguente risultato dalla seguente riga di codice C # in es-MX Culture

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

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

miércoles, 22 ottobre 2008

Vorrei ottenere quanto segue

Miércoles, 22 ottobre 2008

devo costruire la mia cultura?

È stato utile?

Soluzione

Non è necessario costruire la propria cultura. Devi solo cambiare la proprietà DateTimeFormat.DayNames e DateTimeFormat.MonthNames nella cultura corrente.

cioè.

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

Tuttavia, è strano che en-US mostri mesi e giorni con la prima lettera maiuscola e per mx-ES no.

Spero che sia d'aiuto !.

Altri suggerimenti

Il modello di LongDate per lo spagnolo (Messico) è

  

dddd, dd 'de' MMMM 'de' yyyy

secondo Thread.CurrentThread.CurrentCulture.DateTimeFormat .LongDatePattern. Suppongo che devi solo convertire manualmente le lettere iniziali del giorno e del mese in maiuscolo o puoi usare Thread.CurrentThread.CurrentCulture.TextInfo.ToTitleCase e quindi sostituisci " De " con " de " ;.

le prime due soluzioni funzionano bene, ma cosa succederebbe se volessimo estenderlo a qualsiasi cultura, quindi mi è venuto in mente questo approccio, cambio l'attuale array di data e ora della cultura in 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;
            }

come può essere migliorato senza il Loop?

un po 'in ritardo ma questo funziona per me!

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


    }
Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top